UIAlertView弹出窗口之间的UIGestureRecognizer事件

时间:2011-08-15 19:53:13

标签: iphone ios uialertview uigesturerecognizer

我有一个非常奇怪的问题,可能很难解释,但我感谢任何帮助或建议。

我有一个基本视图(视图B),它有一个UIGestureRecognizer,可以检测左右手势。

在View B的顶部,我有几个覆盖整个视图的小视图(视图C)。 (把它想象成日历)。

在每个View C上,我都有一个轻敲手势识别器和一个长按手势识别器。在点击手势上,我显示了一个UIAlertView。

所以这就是问题所在:

我可以点击View C然后滑动View B,在UIAlertView显示之前触发View B滑动事件。这会导致我的应用崩溃,因为当使用滑动事件移除View B时,由于View C位于View B之上,因此它们也会被删除,并且根本无法访问alertView:clickedButtonAtIndex:。

在UIAlertView显示之前,有没有人知道如何防止滑动发生?谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

您可能想尝试在.h文件中创建一个全局BOOL变量,该变量表示是否已注册了tap事件。在注册点按时调用的方法中,将变量设置为NO,并在注册滑动时调用的方法中,检查BOOL变量是否为YESNO,如果是NO,则表示已注册了点击,您不应继续使用滑动方法。然后,只需在BOOL重新签名后将YES变量设置为UIAlertView。希望有所帮助!

答案 1 :(得分:1)

正如您所说,C视图完全覆盖视图B.因此,除非已显示警报,否则不应注册B上的滑动手势。您可以在(void)didPresentAlertView:(UIAlertView *)alertView;中添加B的手势识别器。

然后在alertView:clickedButtonAtIndex:中,您可以删除B的手势识别器。

HTH,

阿克沙伊