2012-06-02 58 views
2

NSTimer正在暫停一段時間,然後在執行UIGesture操作時再次開始。NSTimer在執行UIGesture操作時暫停一段時間

我正在開發一個iOS應用程序,我必須每0.5秒重複觸發一次NSTimer,並基於該定時器移動歌曲進度條。並且當用戶觸摸我保存在相同視圖上的一些圖像時也處理觸摸事件。我看到用戶觸摸圖像時,用於移動進度條的計時器正在停止一會兒,然後再次繼續。

是否有任何問題,我們無法在同一視圖中同時處理定時器和觸摸事件?

我定時器

myTimer = [NSTimer scheduledTimerWithTimeInterval:timeinterval target:self selector:@selector(updatplayer:) userInfo:nil repeats:YES]; 
    [[NSRunLoop mainRunLoop] addTimer:myTimer forMode:NSRunLoopCommonModes]; 

回答

1

代碼這是用的NSTimer一個常見的問題。雖然您可以使用運行循環模式來改善事情,但更好的解決方案是切換到GCD定時器。一個例子見RNTimer。有關更多信息,請參閱dispatch_source_create上的文檔。

+0

有了NSTimer,我們無法處理這一個? – naga

+0

由於GCD傾向於更輕鬆地完成並且無需創建保留循環,所以通常比使用NSTimer的運行循環模式更加麻煩。但是在你的代碼中你會安排兩次,這可能會導致問題。如果您要自己調用addTimer,請不要使用「預定」變體。這是安排兩次。 –