ios - 防止过于频繁地调用委托(delegate)方法

标签 ios objective-c delay

您将如何在调用某些方法之间添加延迟?

这是我只想每秒触发 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/

相关文章:

ios - 升级到 xcode 7 后代码出现问题

objective-c - 记住 performSelector : for later in Objective-C

ios - 通知触发错误。 swift

ios - 当应用程序未运行时使用推送通知的内容更新 SQLite

ios - @property int 值不能改变,真的很奇怪,我找不到解决办法

objective-c - 将颜色配置文件 sRGB 嵌入从 cocoa mac 应用程序创建的 JPEG 中

javascript - 如何在 Javascript 中延迟提交表单

css - 我怎样才能延迟 :hover effect in CSS?

jQuery 添加和删除延迟

iOS 关闭 iPad 屏幕