2009-12-21 11 views
0

在iPhone和模擬器中,函數touchesMoved的行爲不同。touches iPhone和模擬器中的移動行爲

函數touchesMoved的重複間隔(刷新率)比模擬器快得多。有沒有辦法處理差異?

+0

當你說「比模擬器快得多」時,你的意思是「在模擬器上快得多嗎?」模擬器上的許多事情要快得多,但這對你的程序無關緊要;如果你依靠特定的刷新率,那麼你無論如何都不會工作(因爲它不能保證)。你看到什麼問題? – 2009-12-21 01:21:50

+0

的情況是,該設備確實比模擬器快。爲了測試這個,我只是嘗試通過拖動來移動UIImageView。我發現在iPhone中拖動速度更快。 – Raptor 2009-12-21 03:44:12

回答

3

通常人們會發現這是一個問題,因爲他們在touchesMoved處理程序中做了大量的事情,並且當事件頻繁到達時,它會使界面顯得滯後。

處理這個問題的一個相對簡單的方法是:首先,在touchesMoved處理函數中,將觸摸位置存儲在一個變量中,該變量表示跟蹤手指的位置。

立即從touchesMoved處理程序返回。創建一個NSTimer對象,並將你的視圖控制器設置爲它的代理,並且可以執行任何重繪圖/查看用於touchesMoved處理程序的移動行爲。因此,無論touchesMoved事件之間的時間如何,您都會獲得接近恆定的移動。

如果你真的很高級,你可以使用自定義的NSRunLoop而不是使用定時器,但這比我在這裏可以解釋的更多:)總體思路是:不要在觸摸事件處理程序中做所有事情。

+0

非常好的答案。我需要一些時間來改變我的代碼:P – Raptor 2009-12-21 03:45:19