我有一个函数可以选择UITableView
上的一行,然后触发didSelectRowAtIndexPath
来模拟已点击的行。这一切都发生得非常快,很难看出发生了什么,我想在这些行动之间人为地停顿一下,以便更加赏心悦目。
我使用以下代码使用NSTimer
实现了此功能,但它的分辨率只有1秒。我理想的是要暂停300毫秒左右。我怎样才能尽可能简单地实现?
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]];
答案 0 :(得分:1)
我不确定我同意直接调用didSelectRowAtIndexPath。我建议将你在那里做的任何事情转移到一个单独的方法(比如selectionResponse:
)并直接调用它。
完成此操作后,您可以使用 performSelector:withObject:afterDelay:
来调用selectionResponse:
方法,将afterDelay:
参数设置为您想要的任何值。< / p>
performSelector:withObject:afterDelay
上的文档链接为here
请注意在您的dealloc中使用+ cancelPreviousPerformRequestsWithTarget:selector:object:
(来自同一文档)也是个好主意,如果您的用户选择退出视图,则取消待处理的执行请求控制器在调用选择器之前的延迟时间内。这样可以防止崩溃。