2011-11-09 49 views
0

用戶將遊戲塊(第i個圖像視圖)拖動到其目標位置。程序計數,看到所有項目都在正確的位置,宣佈「遊戲結束」並將userInteractionEnabled設置爲NO。如何強制TouchesEnded

偉大的,除了如果用戶的手指仍然在遊戲塊上,用戶可能會意外地將該塊拖回目標區域。 「遊戲結束」正在顯示,但該作品已不在正確的位置。

有沒有辦法強制touchesEnded(而不是檢測touchesEnded),以便當棋子在其最終目的地時(即,使得用戶不會意外地拉動它不合適)?

userInteractionEnabled = NO似乎不會生效,直到觸摸被釋放。

回答

0

我不知道強制touchesEnded的方法。

很明顯,處理這種情況的一種方法是讓應用程序保持指示遊戲結束的狀態,並防止在該狀態下移動任何遊戲塊。

你可能會嘗試beginIgnoringInteractionEvents,但我懷疑這會做你正在尋找的東西。我真的認爲,在你的應用程序中管理狀態,以確保你能做正確的事情,而不是在達到最終狀態時移動該部分,這是要走的路。

從蘋果公司的事件處理指南適用於iOS:

關閉觸摸事件的交付期限。一個應用程序可以調用UIApplication方法beginIgnoringInteractionEvents和後來的 調用endIgnoringInteractionEvents方法。第一種方法阻止應用程序完全接收觸摸事件;調用第二個方法 以恢復收到此類事件。您有時想在您的代碼執行 動畫時關閉事件傳遞。

0

我想在自己的應用程序中做一個非常類似的操作後發現了這個問題。我希望touchesEnded:方法在點擊移動動作(如touchDown動作方法)後立即運行,但不知道如何實現這一點。最後,這就是我所做的,它的工作! :

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
... 

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 

    [self touchesEnded:touches withEvent:event]; 
}); 
} 

這工作完美!