有没有办法停用 UIScrollView 的减速?
我想允许用户滚动画布,但我不希望用户抬起手指后画布继续滚动。
有没有办法停用 UIScrollView 的减速?
我想允许用户滚动画布,但我不希望用户抬起手指后画布继续滚动。
这可以通过使用UIScrollView
委托方法scrollViewWillBeginDecelerating
自动将内容偏移设置为当前屏幕位置来完成。
实施:
UIScrollView
如果您还没有这样做,请为您的对象分配一个委托。在委托的.m
实现文件中,添加以下代码行:
-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
[scrollView setContentOffset:scrollView.contentOffset animated:YES];
}
瞧!不再自动滚动。
对于 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
自动滚动。
你可以把减速率调得很高。以无限的速度,它会立即停止。尝试将速率设置为这些常数:
scrollView.decelerationRate = UIScrollViewDecelerationRateNormal;
和
scrollView.decelerationRate = UIScrollViewDecelerationRateFast;
如果快速对您来说还不够快,UIScrollViewDecelerationRateFast 只是类型定义为浮点数,因此您只需将其乘以 10 倍左右即可进一步加快速度。
只需将 decelerationRate 属性设置为 0
它将禁用自动滚动属性。但请记住,如果滚动视图内容大小很大,用户交互将变得很糟糕。