39

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

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

4

5 回答 5

70

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

实施:

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

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

瞧!不再自动滚动。

于 2009-08-06T21:08:07.107 回答
42

对于 iOS 5.0 或更高版本,有比调用setContentOffset:animated:.

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

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

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

于 2012-10-17T05:49:36.570 回答
20

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

scrollView.decelerationRate = UIScrollViewDecelerationRateNormal;

scrollView.decelerationRate = UIScrollViewDecelerationRateFast;

如果快速对您来说还不够快,UIScrollViewDecelerationRateFast 只是类型定义为浮点数,因此您只需将其乘以 10 倍左右即可进一步加快速度。

于 2009-07-09T18:22:04.210 回答
1

只需将 decelerationRate 属性设置为 0

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

于 2018-03-28T07:15:47.727 回答
0
于 2019-04-17T05:03:26.630 回答