停用UIScrollView减速

Mar*_*fer 38 iphone cocoa-touch uiscrollview iphone-sdk-3.0

有没有办法停用UIScrollView的减速?

我想允许用户滚动画布,但我不希望画布在用户抬起手指后继续滚动.

Mar*_*ark 67

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

实施:

  1. UIScrollView如果您尚未这样做,请为您的对象分配一个委托.
  2. 在您的委托的.m实现文件中,添加以下代码行:

    -(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{  
        [scrollView setContentOffset:scrollView.contentOffset animated:YES];   
    }
    
    Run Code Online (Sandbox Code Playgroud)

瞧!不再自动滚动.


Quo*_*ion 38

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

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

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

分配当前偏移量可以targetContentOffset停止UIScrollView自动滚动.


Dan*_*enc 21

你可以把减速率调得很高.无限速率,它会立即停止.尝试将速率设置为这些常量:

scrollView.decelerationRate = UIScrollViewDecelerationRateNormal;
Run Code Online (Sandbox Code Playgroud)

scrollView.decelerationRate = UIScrollViewDecelerationRateFast;
Run Code Online (Sandbox Code Playgroud)

如果快速仍然不够快,UIScrollViewDecelerationRateFast只是作为一个浮点数类型定义,所以你可以将它乘以10倍左右,以加快它的速度.

  • 根据我的经验,`decelerationRate`属性只响应文档中显示的值:`UIScrollViewDecelerationRateNormal`和`UIScrollViewDecelerationRateFast`. (10认同)