2012-01-14 51 views
1

這是我的iPhone應用程序的UI上的問題,我有一個按鈕和另一個接受觸摸手勢識別器的圖像,都有目標動作。如果我一次觸摸按鈕和視圖,一切都很好。但是,如果我同時或連續地觸摸這兩個,事情就會變得混亂。按鈕和手勢處理程序操縱相同的狀態變量,所以如果它們並排運行,結果是非確定性的。在iOS中,GestureRecogizer目標操作是否在單獨的線程中運行?

我試圖通過禁用按鈕立即解決此問題,我進入手勢識別器處理程序,並在退出處理程序之前啓用它。但是這並不能解決我的問題!

所以唯一的可能性(我的猜測)是手勢識別器在按鈕處理程序運行時被觸發。但是這隻有在它們駐留在不同的線程中才會發生。那麼是否有人知道手勢識別器處理程序是否在不同的線程中運行?或者,更具體到我的問題,我應該怎麼做我的情況?使用警戒變量來防止衝突?

+0

您可以發佈任何來自這兩個處理程序的代碼? – reddersky 2012-01-14 17:23:23

+0

我想出了這個問題:如果我同時點擊按鈕和圖像,禁用按鈕不起作用,因爲按鈕事件在禁用之前會被觸發;由於我的手勢處理程序使用計時器在1秒後執行某些操作,因此按鈕處理程序會在第二秒鐘內被調用並導致錯誤。我最終使用了guard變量來解決這個問題。 但這裏的問題仍然有效,有沒有人知道手勢識別器處理程序是否在與主UI或另一個線程相同的線程中調用。 。 – NeoWang 2012-01-14 17:46:16

+0

它們在主UI線程上調用。 – reddersky 2012-01-14 18:25:09

回答

0

把這個代碼實現手勢識別的委託類

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { return YES; }

相關問題