我有一个非常奇怪的问题,可能很难解释,但我感谢任何帮助或建议。
我有一个基本视图(视图B),它有一个UIGestureRecognizer,可以检测左右手势。
在View B的顶部,我有几个覆盖整个视图的小视图(视图C)。 (把它想象成日历)。
在每个View C上,我都有一个轻敲手势识别器和一个长按手势识别器。在点击手势上,我显示了一个UIAlertView。
所以这就是问题所在:
我可以点击View C然后滑动View B,在UIAlertView显示之前触发View B滑动事件。这会导致我的应用崩溃,因为当使用滑动事件移除View B时,由于View C位于View B之上,因此它们也会被删除,并且根本无法访问alertView:clickedButtonAtIndex:。
在UIAlertView显示之前,有没有人知道如何防止滑动发生?谢谢你的帮助!
答案 0 :(得分:1)
您可能想尝试在.h文件中创建一个全局BOOL
变量,该变量表示是否已注册了tap事件。在注册点按时调用的方法中,将变量设置为NO
,并在注册滑动时调用的方法中,检查BOOL
变量是否为YES
或NO
,如果是NO
,则表示已注册了点击,您不应继续使用滑动方法。然后,只需在BOOL
重新签名后将YES
变量设置为UIAlertView
。希望有所帮助!
答案 1 :(得分:1)
正如您所说,C视图完全覆盖视图B.因此,除非已显示警报,否则不应注册B上的滑动手势。您可以在(void)didPresentAlertView:(UIAlertView *)alertView;
中添加B的手势识别器。
然后在alertView:clickedButtonAtIndex:
中,您可以删除B的手势识别器。
HTH,
阿克沙伊