2012-01-13 21 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:(来自同一文件),取消一个好主意未决如果用户选择执行请求在调用选择器之前,在延迟期内退出视图控制器。这将防止崩溃。