您将如何在调用某些方法之间添加延迟?
这是我只想每秒触发 30 次的代码:
- (void) scrollViewDidScroll: (UIScrollView*)scrollView {
[self performSelector:@selector(needsDisplay) withObject:nil afterDelay:0.033];
}
- (void) needsDisplay {
[captureView setNeedsDisplay];
}
如果我这样离开它,它只会在用户停止滚动后被调用。
我想要做的是在用户滚动时调用该方法,但每次调用之间有 33 毫秒的延迟。
最佳答案
有不同的委托(delegate)方法会调用不同的场合。此方法仅在用户完成滚动时调用。因此,您可以根据需要执行某些任务。如果您想在滚动时或滚动之前做一些事情,您可以使用不同的委托(delegate)方法。根据您的功能选择以下之一。
– scrollViewDidScroll:
– scrollViewWillBeginDragging:
– scrollViewWillEndDragging:withVelocity:targetContentOffset:
– scrollViewDidEndDragging:willDecelerate:
– scrollViewShouldScrollToTop:
– scrollViewDidScrollToTop:
– scrollViewWillBeginDecelerating:
– scrollViewDidEndDecelerating:
有关这些代表的详细说明,请点击此链接。
https://developer.apple.com/library/ios/documentation/uikit/reference/uiscrollviewdelegate_protocol/Reference/UIScrollViewDelegate.html
代表应该在应该打电话的时候打电话......否则你会导致一些故障。
关于ios - 防止过于频繁地调用委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19902667/