停用UIScrollView减速

时间:2009-07-09 18:17:49

标签: iphone cocoa-touch iphone-sdk-3.0 uiscrollview

有没有办法停用减速UIScrollView?

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

5 个答案:

答案 0 :(得分:63)

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

实施:

  1. 如果您尚未这样做,请将代理人分配给UIScrollView对象。
  2. 在代理人的.m实施文件中,添加以下代码行:

    -(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{  
        [scrollView setContentOffset:scrollView.contentOffset animated:YES];   
    }
    
  3. 瞧!不再自动滚动。

答案 1 :(得分:38)

对于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自动滚动。

答案 2 :(得分:20)

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

scrollView.decelerationRate = UIScrollViewDecelerationRateNormal;

scrollView.decelerationRate = UIScrollViewDecelerationRateFast;

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

答案 3 :(得分:0)

只需将decelerationRate属性设置为0

即可

它将禁用自动滚动属性。但请记住,如果scrollview内容很大,用户交互将变得很糟糕。

答案 4 :(得分:0)

以前的版本代码:↓

scrollView.decelerationRate = UIScrollView.DecelerationRate.fast

当前的4.2版本代码:↓

scrollView.decelerationRate = UIScrollViewDecelerationRateFast