2011-08-15 63 views
1

我有一個非常奇怪的問題,它可能很難解釋,但我很感激任何幫助或建議。UIAlertView彈出窗口之間的UIGestureRecognizer事件

我有具有UIGestureRecognizer檢測左和右手勢基本視圖(視圖B)。

在視圖B的頂部,我有幾個覆蓋整個視圖的小視圖(視圖C)。 (將其視爲日曆)。

在每個視圖C上,我都有一個輕擊手勢識別器和一個長按手勢識別器。在輕拍手勢上,我顯示一個UIAlertView。

所以這裏的問題:

我可以點擊查看C,然後輕掃查看B和UIAlertView中顯示的前視圖B輕掃事件觸發。這會導致我的應用程序崩潰,因爲當View B通過滑動事件被移除,並且由於View C位於View B之上時,它們也會被刪除,並且alertView:clickedButtonAtIndex:根本沒有到達。

有沒有人有任何想法如何防止在UIAlertView顯示之前發生刷卡?謝謝您的幫助!

回答

1

你可能想嘗試在.h文件中說,如果敲打事件被登記了一個全局變量BOOL。在您點擊註冊時調用的方法中,將變量設置爲NO,並在註冊滑動時調用的方法中,檢查BOOL變量是YES還是NO,如果它是NO,則表示點擊已被註冊,並且您不應該繼續使用滑動方法。然後,在UIAlertView已被辭職後,只需將BOOL變量設置爲YES即可。希望有所幫助!

1

正如你所說,C查看完全覆蓋觀B.因此,B上的滑動手勢不應該,除非已顯示警報註冊。您可以在(void)didPresentAlertView:(UIAlertView *)alertView;中添加B的手勢識別器。

然後在alertView:clickedButtonAtIndex:中,您可以刪除B的手勢識別器。

HTH,

阿克沙伊

相關問題