从各方面来看,Ashley Smart提出的Obj-C中的这个问题是一个很好的解决方案(如何检测UIScrollView何时完成滚动).
-(void)scrollViewDidScroll:(UIScrollView *)sender
{
[NSObject cancelPreviousPerformRequestsWithTarget:self];
//ensure that the end of scroll is fired.
[self performSelector:@selector(scrollViewDidEndScrollingAnimation:) withObject:nil afterDelay:0.3];
...
}
-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
[NSObject cancelPreviousPerformRequestsWithTarget:self];
...
}
Run Code Online (Sandbox Code Playgroud)
但是,我需要一个解决方案,在Swift中.
似乎由Matt(dispatch_after - GCD in swift?)贡献的优秀延迟函数可能会有所帮助.
func delay(delay:Double, closure:()->()) {
dispatch_after(
dispatch_time(
DISPATCH_TIME_NOW,
Int64(delay * Double(NSEC_PER_SEC))
),
dispatch_get_main_queue(), closure)
}
Run Code Online (Sandbox Code Playgroud)
并实施为......
delay(0.4) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
但我还是没把它放在一起.有帮助吗?