我正在製作一款遊戲,並且我使用CAEAGLLayer
支持的UIView
子類來呈現遊戲引擎。觸摸處理使用-touchesBegan:withEvent:
et。人。爲什麼我的iPad觸摸事件被延遲(有時達到一秒)?
一切工作正常,除非很少,如果其中一個屏幕控件快速輕敲,-touchesBegan:withEvent:
不會被調用的某個地方在0.1和1-2秒之間。這種情況可能發生在20次之內,並且只有在您首先快速點擊屏幕(4-5次)時纔會發生。如果我還在屏幕上的另一個控件上按住另一個手指,似乎更有可能發生這種情況。
認爲這是我自己的代碼,我分類UIApplication
,所以我可以添加一個日誌語句-sendEvent:
。當觸碰發生時,-sendEvent:
在觸摸開始後的某段時間纔會被調用,所以它在我的UIView
子類中的觸摸處理代碼似乎沒有錯。
有沒有人有任何想法這裏發生了什麼(除了iOS有一些晦澀的bug)?是否有某種內部的「事件隊列」讓事件傳遞在填滿時變得遲緩?有沒有其他人經歷過這個?
您是否在這些附近使用了'UIGestureRecognizers'?或者只是原始的'touchesBegan:withEvent:'等等?當我要求手勢識別器在發射前失敗時,我也一樣。 – 2011-05-21 10:24:15
我沒有使用或添加任何'UIGestureRecognizer's,它都是'-touchesBegan:withEvent:'。 '[UIApplication sendEvent:]'本身被延遲了,這比我的觸摸處理代碼要低得多。看起來像更基本的事情是導致這個問題。 – 2011-05-21 10:27:38
觸摸事件可以通過阻塞主線程的任何方法來延遲;您可以分析並確定您沒有對主要進行密集操作嗎?如果觸摸事件時間是非常重要的,那麼我建議只做主要的UI繪圖。 – 2011-05-21 12:18:47