有没有办法停用减速UIScrollView?
我希望允许用户滚动画布,但我不希望画布在用户抬起手指后继续滚动。
答案 0 :(得分:63)
这可以通过使用UIScrollView
委托方法scrollViewWillBeginDecelerating
自动将内容偏移设置为当前屏幕位置来完成。
实施:
UIScrollView
对象。在代理人的.m
实施文件中,添加以下代码行:
-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
[scrollView setContentOffset:scrollView.contentOffset animated:YES];
}
瞧!不再自动滚动。
答案 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