2012-07-14 44 views
0

我有UIView觸摸事件處理程序,perfomsSelector withDelay ....但是,當用戶解開屏幕touchEnded事件正在發射,當然應該。我這樣做是因爲我希望操作在用戶放入並在此UIView中留下幾秒鐘手指後啓動。如何確定屏幕是否仍然被觸摸?

我希望當用戶在選擇器方法開始之前(在延遲過去之前)將手指從屏幕上移開,首先不要運行選擇器,然後不運行touchEnded方法。

我可以開始添加標誌,但這對我來說效率不高。

是否有另一種方式來做到這一點。

謝謝。

回答

1

@rob答案是一個更好的解決方案,但如果你不能以任何理由使用它。試試這個:

在觸摸結束調用cancelPreviousPerformRequestsWithTarget。這將取消您之前的通話。

+0

謝謝你的評論。無論如何將檢查它。 – 2012-07-14 17:08:11

+0

將此標記爲首次回答的答案。 – 2012-07-14 17:22:17

+0

不得不說@ @rob是第一個答案。 – shannoga 2012-07-14 17:27:40

1

最好的解決方案可能是使用UILongPressGestureRecognizer,而不是自己跟蹤觸摸。

+0

已經實現了UIView觸摸的解決方案。我可以使用UILongpressGestureRecognizer,而且用戶不需要用手指開始移動已經實現的觸摸? – 2012-07-14 17:07:44

1

如果您不想使用手勢識別器,則需要BOOL(longpressed)和對cancelPreviousPerformRequestsWithTarget:self的調用。如果'longpressed'被設置,你會檢查touchesEnded。

+0

謝謝。我想這是最快的解決方案,如果我不想更改已寫入的代碼。 – 2012-07-14 17:13:59

相關問題