我在一个页面上有几个 UIScrollView
。您可以单独滚动它们或将它们锁定在一起并作为一个滚动。当它们被锁定时会出现问题。
我使用 UIScrollViewDelegate
和 scrollViewDidScroll:
来跟踪移动。我查询已更改的 UIScrollView
的 contentOffset
,然后通过将它们的 contentOffset
属性设置为匹配来将更改反射(reflect)到其他 ScrollView 。
太好了....除了我注意到很多额外的电话。以编程方式更改 ScrollView 的 contentOffset
会触发调用委托(delegate)方法 scrollViewDidScroll:
。我试过使用 setContentOffset:animated:
代替,但我仍然在委托(delegate)上获得触发器。
如何以编程方式修改我的 contentOffsets 以不触发 scrollViewDidScroll:
?
实现说明....
每个 UIScrollView
都是自定义 UIView
的一部分,它使用委托(delegate)模式回调到处理协调各种 contentOffset 的呈现
值。UIViewController
子类
最佳答案
通过设置 UIScrollView
的边界,可以在不触发委托(delegate)回调 scrollViewDidScroll:
的情况下更改 UIScrollView
的内容偏移量原点设置为所需的内容偏移量。
CGRect scrollBounds = scrollView.bounds;
scrollBounds.origin = desiredContentOffset;
scrollView.bounds = scrollBounds;
关于ios - 以编程方式设置 contentOffset 触发 scrollViewDidScroll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9418311/