2010-04-13 48 views
1

我有一個簡單的應用程序,按鈕,UIImageView和NSTimer。 定時器每5秒反覆啓動一次以更新ImageView,同時該按鈕僅停止定時器並切換到另一個View。NSTimer凍結應用程序,直到它再次被觸發?

問題是,當我按下按鈕時,幾秒鐘內沒有任何反應(直到定時器再次啓動)。

有沒有辦法導致按鈕停止計時器,並在任何給定的時間而不是在計時器的間隔之間完成其工作?

該按鈕在InterfaceBuilder中定義並連接到代碼中的函數。

NSTimer代碼:(我已經嘗試&,但沒有將它添加到RunLoop中)。

updateTimer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(updateImageViews) userInfo:nil repeats:YES];

NSRunLoop* runLoop = [NSRunLoop currentRunLoop]; 
[[NSRunLoop currentRunLoop] addTimer:updateTimer forMode:NSDefaultRunLoopMode]; 
[runLoop run]; 

謝謝!

+0

你使用無效來停止計時器...?你可以把一些代碼...? – 2010-04-13 10:04:34

+0

我已經添加了計時器代碼, 和是的,我使用invalidate來停止按下按鈕時被調用的函數中的定時器 thanks – 2010-04-13 16:11:13

+0

當你說「沒有任何事情發生」時,你的意思是沒有出現下一個視圖?定時器觸發時視圖是否出現?不是真的明確問題是什麼,想看什麼以及看到什麼? – TechZen 2010-04-13 18:53:19

回答

1

「請注意,從NSRunloop的角度來看,NSTimer對象並不是」輸入「 - 它們是一種特殊的類型,其意義之一就是它們在啓動時不會導致運行循環返回。 (來自NSRunLoop類參考) - 所以我認爲你阻止runloop繼續?也許把計時器作爲解決方案的另一個線程? 我也有我自己的問題:(

相關問題