DBD*_*DBD 60 uiscrollview uiscrollviewdelegate ios
我UIScrollView在页面上有一些.您可以单独滚动它们或将它们锁定在一起并将它们滚动为一个.锁定时会出现问题.
我使用UIScrollViewDelegate并scrollViewDidScroll:跟踪运动.我查询contentOffset的UIScrollView哪些改变,然后反映他们的设置更改为其他滚动视图contentOffset属性相匹配.
很棒....除了我注意到很多额外的电话.以编程方式更改contentOffset我的滚动视图会触发scrollViewDidScroll:调用委托方法.我尝试过使用setContentOffset:animated:,但我仍然在委托上获得触发器.
如何以编程方式修改contentOffsets以不触发scrollViewDidScroll:?
实现说明....每个UIScrollView都是自定义的一部分,UIView它使用委托模式回调到UIViewController处理协调各种contentOffset值的呈现子类.
Tar*_*ark 106
通过将原点设置的边界设置为所需的内容偏移量,可以在UIScrollView不触发委托回调的情况下更改a的内容偏移量.scrollViewDidScroll:UIScrollView
CGRect scrollBounds = scrollView.bounds;
scrollBounds.origin = desiredContentOffset;
scrollView.bounds = scrollBounds;
Run Code Online (Sandbox Code Playgroud)
小智 78
尝试
id scrollDelegate = scrollView.delegate;
scrollView.delegate = nil;
scrollView.contentOffset = point;
scrollView.delegate = scrollDelegate;
Run Code Online (Sandbox Code Playgroud)
为我工作.
Kuk*_*osk 41
使用UIScrollView的现有属性怎么样?
if(scrollView.isTracking || scrollView.isDragging || scrollView.isDecelerating) {
//your code
}
Run Code Online (Sandbox Code Playgroud)
简化@Tark的答案,你可以定位滚动视图,而不是scrollViewDidScroll像这样在一行中触发:
scrollView.bounds.origin = CGPoint(x:0, y:100); // whatever values you'd like
Run Code Online (Sandbox Code Playgroud)
小智 5
另一种方法是在scrollViewDidScroll委托中添加一些逻辑,以确定是以编程方式还是通过用户的触摸来触发内容偏移的更改.
| 归档时间: |
|
| 查看次数: |
33830 次 |
| 最近记录: |