4

一个 ScrollView 有一些 SubViews....
ScrollView 包含其预定义的手势(Pan)和我的自定义手势(Pan)以及同时识别它......
SubViews 还包含自定义 Pan Gesture......
一切正常很好,除了子视图上的平移手势...
当我在子视图上平移时,它的超级视图也会触摸并处理我不想要的东西...
当子视图上进行平移时,超级视图不应该识别它们.. .
我如何阻止将我的 SubView 手势传递给它的 SuperView?

4

2 回答 2

9

要阻止superview响应手势,当触摸点下有subview时,可以这样做:

实现如下 UIGestureDelegate 方法

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;

作为

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    return  (touch.view == superView);
}

并将此委托设置为分配给 superView 的手势识别器。

我希望这应该做需要的。

于 2013-03-16T10:10:55.740 回答
0

基本上,当您单击 subview 时,无法识别 superview 手势,因为您的 superview 与 subview 重叠。

在 .h 中添加委托并将其提供给 tapGestures 并给出这样的条件

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    if([gestureRecognizer.view isKindOfClass:[superView class]])
        return NO;
    else
        return YES;
}
于 2013-03-16T10:04:39.213 回答