2012-01-13 52 views
0

我有一個功能,選擇UITableView上的行,然後觸發didSelectRowAtIndexPath來模擬被點擊的行。這一切都發生得非常快,很難看到發生了什麼事情,我想在這些行爲之間人爲地停頓一下,以便它更加令人愉悅。iPhone ...動作之間暫停當前線程(非阻塞)

我使用NSTimer使用以下代碼實現了此功能,但它只具有低至1秒的分辨率。理想情況下,我想暫停300毫秒左右。我怎樣才能儘可能地實現?

[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; 

回答

1

我不確定我是否同意直接調用didSelectRowAtIndexPath。我會建議將你在那裏做的任何事情都轉移到一個單獨的方法(例如,selectionResponse:)並直接調用它。

一旦你做到了這一點,你可以使用performSelector:withObject:afterDelay:打電話給你selectionResponse:方法,設置afterDelay:參數任何你想要的值。

的鏈接,在performSelector:withObject:afterDelay的文檔是here

注意它也是在你的dealloc使用+ cancelPreviousPerformRequestsWithTarget:selector:object:(來自同一文件),取消一個好主意未決如果用戶選擇執行請求在調用選擇器之前,在延遲期內退出視圖控制器。這將防止崩潰。