防止uiscrollview向右滚动

Posted

技术标签:

【中文标题】防止uiscrollview向右滚动【英文标题】:Prevent right scrolling of uiscrollview 【发布时间】:2014-10-23 17:31:51 【问题描述】:

我有一个可以水平滚动的 UIScrollView。但是,我希望在满足特定条件之前禁用右滚动。实现这一目标的最简洁方法是什么?

谢谢!

【问题讨论】:

【参考方案1】:

在您的 UIScrollView 委托中实现 scrollViewDidScroll

- (void)scrollViewDidScroll:(UIScrollView *)scrollview 
  CGPoint contentOffset = scrollview.contentOffset;
  if (!yourCondition && contentOffset.x > 0) 
    contentOffset.x = 0;
    scrollview.contentOffset = contentOffset;
  

或者,您可以添加一个观察者 forKeyPath:@"bounds" options:NSKeyValueObservingOptionNew 并在那里处理 UIScrollView 边界更改。

您还可以添加:

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollview withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset 
  if (!yourCondition && targetContentOffset->x > 0) 
    targetContentOffset->x = 0;
  

【讨论】:

这行得通,但是当达到偏移限制时,我有时会在相反的方向上出现轻微的“反弹”。尤其是当我在屏幕上滑动垃圾时会发生这种情况。我认为这与减速值有关。 您可以按照我编辑答案的方式停止减速。

以上是关于防止uiscrollview向右滚动的主要内容,如果未能解决你的问题,请参考以下文章

UIScroll 视图 + UIView + UITableview 问题

调整容器 uiscrollview 中所有 uiscrollview 的大小

何时使用 UITouch 与 UIScroll

UIScrollView 不使用 RubyMotion 滚动

滚动发生时嵌套 UIScrollViews 并获取信息

滚动 UIScrollView 时如何缩放