我正在使用UIScrollView的取消触摸功能和canCancelContentTouches。
但是,我希望uiscrollview在检测到水平拖动(非垂直)时尝试取消触摸。
(希望解决方案将在< iOS 3.13下提供)
谢谢
答案 0 :(得分:4)
实施UIScrollViewDelegate
,然后使用以下内容:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
[scrollView setContentOffset: CGPointMake(0, scrollView.contentOffset.y)];
}
另一种方法是使UIScrollView小于或等于其父视图的大小,并禁用“始终弹跳水平”。
答案 1 :(得分:1)
我发现限制滚动视图移动的最安全和最成功的方法是子类 UIScrollView 并覆盖 setContentOffset:animated:和 setContentOffset :方法(下面的代码)。
重写这些方法的优点是它可以在任何UIKit代码开始对其执行操作之前直接更改所请求的 contentOffset ,从而避免在修改contentOffset时可能发生的任何副作用 scrollViewDidScroll:或其他 UIScrollViewDelegate 方法。
- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated {
// restrict movement to horizontal only
CGPoint newOffset = CGPointMake(contentOffset.x, 0);
[super setContentOffset:newOffset animated:animated];
}
- (void)setContentOffset:(CGPoint)contentOffset {
// restrict movement to horizontal only
CGPoint newOffset = CGPointMake(contentOffset.x, 0);
[super setContentOffset:newOffset];
}
答案 2 :(得分:0)
我想我会使用方法 scrollViewWillBeginDragging 在UIScrollViewDelegate中找到 在内部我可以控制用户是否正在横向移动......
scrollViewWillBeginDragging:
当滚动视图即将开始滚动内容时告诉委托。
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
参数
<强>滚动视图强>
即将滚动内容视图的滚动视图对象。
<强>讨论强>
在稍微拖动之前,代理可能不会收到此消息。
<强>状况 适用于iOS 2.0及更高版本。