1

我添加了 SimpleUITapGestureRecognizerUIImageView创建了在用户点击/触摸时调用的手势方法 UIImageView

我的代码是:

UITapGestureRecognizer *eagleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(eagleTapGestureIsCall:)];
eagleTapGesture.numberOfTapsRequired = 1;
[self.egaleImgView addGestureRecognizer:eagleTapGesture]; 

手势方法:

- (void)eagleTapGestureIsCall:(UITapGestureRecognizer *)recognizer
{
    CGPoint location = [recognizer locationInView:[recognizer.view superview]];
    NSLog(@"Eagle is Tapped X - %f",location.x);
    NSLog(@"Eagle is Tapped Y - %f",location.y);
}

在这里,如果我添加 GestureUIView而不是self.egaleImgView然后它可以工作(我的意思是 Gesture Method 被调用)但是为什么它不工作self.egaleImgView???

谷歌搜索后我发现,可能是UIView在他们到达之前拦截了触摸UIImageView

所以我在开头添加了以下行viewDidLoad

self.view.userInteractionEnabled = NO; /// Here i set userInteractionEnabled = NO;

下面描述结构以便更好地理解。

                main UIView
                  |     |

(Sub view) mainBackGroungImageView //// size is similar to size of main UIView
                  |     |
        (Sub view) gestureAdded ImageView 

编辑:

对不起,忘记提到我已经添加self.egaleImgView.userInteractionEnabled = YES;到我的 imageView 中的家伙,但它对我不起作用。

请就我的问题给我建议。

提前致谢。

4

4 回答 4

12

设置你的ImageView.userInteractionEnabled = YES;,因为默认情况下它是NO。最好也将视图的用户交互设置为 YES。

于 2013-06-20T07:56:46.073 回答
2

如果您设置userInteractionEnable = NO父视图,它将级联到所有子视图。保持启用。而不是点击手势,您可以尝试以下操作:

为了获得点击图像视图,您可以使用该- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;方法。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event您的视图中,您可以获得被触摸的视图。它可以是这样的,

CGPoint locPoint = [touch locationInView:self.view];
UIView* touchedSubView = [self.view hitTest:locPoint withEvent:event];

然后您可以添加对视图类的检查并实现所需的内容,如下所示

if ([touchedSubView isKindOfClass:[UIImageView class]]) {
    //do stuff
}

希望这可以帮助

于 2013-06-20T09:56:01.563 回答
1

而不是 [recognizer locationInView:[recognizer.view superview]];

使用 [识别器 locationInView:self];

于 2013-06-20T09:11:15.193 回答
0

UIImageView userInteractionEnabled 被禁用。使其无法。

UITapGestureRecognizer *eagleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(eagleTapGestureIsCall:)];
eagleTapGesture.numberOfTapsRequired = 1;
[self.egaleImgView addGestureRecognizer:eagleTapGesture]; 
self.egaleImgView.userInteractionEnabled = YES;

我有同样的问题。这解决了它。

于 2013-06-20T07:59:57.043 回答