最近我遇到了问题。如何禁用UIScrollView的特定区域中的滚动,尤其是UIView或子视图占用的区域。 我已经了解了很多关于子类化和其他长方法来解决这个问题。 但最近我在没有子类化的情况下以简单的方式解决了这个问题:
UIPanGestureRecognizer *panrecognizer = [[UIPanGestureRecognizer alloc] init];
然后
[panrecognizer setCancelsTouchesinView:NO];
[mySubViewInScroll addGestureRecognizer:panrecognizer];
我创建了UIPanGestureRecognizer而没有传递给它的Action,然后将识别器添加到滚动条中的视图。以这种方式,视图上的手势将被捕获,但明确地不由视图或超级视图处理,因为我们传递给对象没有Action。 问题是这个。这是处理此类问题的正确方法,还是最好不要这样做。我的意思是Apple会用这种方法接受这种应用吗?
答案 0 :(得分:0)
实际上我觉得这个,即使不是最好的也是最实用的解决方案。因为搞乱了类和子类只能实现屏幕的部分滚动锁定似乎很奇怪。那么让我们看看Apple是否会接受这种解决方案......
答案 1 :(得分:0)
尝试重写ScrollView的
-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
返回chi