GestureRecogniser并在UIScrollView中禁用UIView的拖动手势

时间:2011-11-17 23:22:11

标签: iphone ios xcode xcode4 ios4

最近我遇到了问题。如何禁用UIScrollView的特定区域中的滚动,尤其是UIView或子视图占用的区域。 我已经了解了很多关于子类化和其他长方法来解决这个问题。 但最近我在没有子类化的情况下以简单的方式解决了这个问题:

UIPanGestureRecognizer *panrecognizer = [[UIPanGestureRecognizer alloc] init];

然后

[panrecognizer setCancelsTouchesinView:NO];
[mySubViewInScroll addGestureRecognizer:panrecognizer];

我创建了UIPanGestureRecognizer而没有传递给它的Action,然后将识别器添加到滚动条中的视图。以这种方式,视图上的手势将被捕获,但明确地不由视图或超级视图处理,因为我们传递给对象没有Action。 问题是这个。这是处理此类问题的正确方法,还是最好不要这样做。我的意思是Apple会用这种方法接受这种应用吗?

2 个答案:

答案 0 :(得分:0)

实际上我觉得这个,即使不是最好的也是最实用的解决方案。因为搞乱了类和子类只能实现屏幕的部分滚动锁定似乎很奇怪。那么让我们看看Apple是否会接受这种解决方案......

答案 1 :(得分:0)

尝试重写ScrollView的

-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

返回chi