停用UIScrollView的减速(Deactivate UIScrollView decelera

2019-06-25 12:56发布

有没有办法去激活一个UIScrollView的减速?

我想允许用户滚动画布上,但我不希望这样的帆布继续滚动的用户解除了手指之后。

Answer 1:

这可以通过利用来完成UIScrollView委托方法scrollViewWillBeginDecelerating以自动设置内容偏移到当前屏幕位置。

要实现:

  1. 指派一名代表为您UIScrollView对象,如果您还没有这样做。
  2. 在您委托的.m实现文件,添加如下代码:

     -(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{ [scrollView setContentOffset:scrollView.contentOffset animated:YES]; } 

瞧! 没有更多的自动滚动。



Answer 2:

对于iOS 5.0或更高版本,还有比调用一个更好的方法setContentOffset:animated:

实现委托方法scrollViewWillEndDragging:withVelocity:targetContentOffset:在您.m文件:

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView
                     withVelocity:(CGPoint)velocity
              targetContentOffset:(inout CGPoint *)targetContentOffset {
    *targetContentOffset = scrollView.contentOffset;
}

分配电流偏移targetContentOffset停止UIScrollView从自动滚动。



Answer 3:

你可以只打开了减速率非常高。 具有无限速度,它会立即停止。 尝试将率这些常量:

scrollView.decelerationRate = UIScrollViewDecelerationRateNormal;

scrollView.decelerationRate = UIScrollViewDecelerationRateFast;

如果增速仍不够快你,UIScrollViewDecelerationRateFast只是Typedef的为float,所以你可以用它乘10个左右的因素,以更加快速度。



Answer 4:

就在decelerationRate属性设置为0

这将禁用自动滚动属性。 但是要记住用户的交互会变得糟糕,如果滚动型contentsize大。



Answer 5:

以前版本代码:↓

scrollView.decelerationRate = UIScrollView.DecelerationRate.fast

当前版本4.2代码:↓

scrollView.decelerationRate = UIScrollViewDecelerationRateFast



文章来源: Deactivate UIScrollView decelerating