【发布时间】:2015-08-15 10:49:15
【问题描述】:
众所周知,Ashley Smart (How to detect when a UIScrollView has finished scrolling) 在 Obj-C 中为这个问题提供了一个很好的解决方案。
-(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];
...
}
不过,我需要 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)
}
并实现为 ...
delay(0.4) {
// do stuff
}
但我还没有把它放在一起。有什么帮助吗?
【问题讨论】:
标签: ios swift uiscrollview