Objective C 触摸事件锁定

Objective C touch event locking

目前我 运行 遇到一个问题,其中有 table 允许触摸事件获取详细信息的单元格。但是,如果用户在 1 秒内按下单元格 2-4 次,则会导致多个视图推送到导航视图控制器上。当视图被弹出并且导航控制器无法进入子视图并返回时,这会导致明显的错误。导致多个陷阱,最不幸的是没有错误日志。但是,由于一开始就不应该支持这种行为。问题是除了线程锁定之外,还有其他方法可以防止 UiButton 或 table 单元格上的多个触摸事件吗?

--侧面信息-- 您可能需要的补充信息,由于在 Xcode 7 中添加了 https 与 http 安全设置,我正在使用 Xcode 6.4 版。如果 Xcode 的更高版本自动实施解决方案,那么也很高兴知道。谢谢你的帮助。

您可以在点击后锁定按钮(或单元格):

button.userInteractionEnabled = NO; 

或整个界面:

[[UIApplication sharedApplication] beginIgnoringInteractionEvents];

并在 transition/loading 完成后解锁。

如果您不想使用 GCD 限制触摸事件,UIButtonUIGestureRecognizer 都会公开一个 enabled 属性。您可以在一次触摸后简单地禁用该按钮,并在您按下详细视图控制器后重新启用它。

重新启用它的一种简单方法是在控制器推送详细视图的 viewWillAppear 方法中——这样 enabled 属性 将在任何时候自动重置你回到那个视图控制器而不必听 UINavigationController 转换等