【问题标题】:UITableViewCell subclass not responding to first touchUITableViewCell 子类对第一次触摸没有响应
【发布时间】:2014-03-23 17:34:17
【问题描述】:

我有一个自定义的UITableViewCell 有几个子视图。单元格的设计使得我想要其中一个子视图 (roundedContainer) 的自定义突出显示行为:

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
{
    [super setHighlighted:highlighted animated:animated];

    self.roundedContainer.backgroundColor = highlighted ? [UIColor colorWithRed:0.85 green:0.85 blue:0.85 alpha:1.0] : [UIColor paperWhiteColor];
}

创建单元格时,我还将其选择样式设置为UITableViewSelectionStyleNone

当我在我的设备上选择单元格时,我遇到了一个间歇性问题,即没有触发预期的操作。具体来说,我正在展示一个模态视图控制器。奇怪的是,如果在选择单元格后,我触摸屏幕上的 anywhere else,则会显示原始模式。它认为动画以某种方式“排队”,直到收到另一个触摸事件。

通过日志记录,我知道didSelectCellAtIndexPath: 和我的演示代码在第一次触摸时立即触发。

当我删除这个自定义高亮实现时,正常服务会恢复。

什么会导致这种奇怪的行为?

【问题讨论】:

    标签: ios iphone cocoa-touch uitableview


    【解决方案1】:

    如果不查看更多代码,很难判断,但看起来您的模态演示确实是在与主线程不同的线程上执行的。您可以尝试以下方式:

    dispatch_async(dispatch_get_main_queue(), ^{ /* present modal here */ });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多