如何检查当前点击哪个uiimageview?

问题描述:

我有三个UIImageview。我使用tapGesture设置了UIImageview的操作。我希望每个UIImageview都有不同的操作。我如何检查当前点击哪个UIImageview?如何检查当前点击哪个uiimageview?

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapping:)]; 
[singleTap setNumberOfTapsRequired:1]; 
[_imageOne addGestureRecognizer:singleTap]; 
[_imageTwo addGestureRecognizer:singleTap]; 
[_imageThree addGestureRecognizer:singleTap]; 

-(void)singleTapping:(UIGestureRecognizer *)recognizer { 
} 
+2

您可以简单地添加标签值的所有imageViews&同时承认,你可以得到标签值可以执行相应的操作。 – iYoung

+0

是的,你可以通过添加标签来实现 – Diksha

可以检测使用以下代码:

-(void)singleTapping:(UITapGestureRecognizer *) recognizer{ 
     if (recognizer.view == _imageOne){ 

     } else if (recognizer.view == _imageTwo) { 

     }else 
     { 
     } 
    } 

UIGestureRecognizer是利用单个视图中使用。有一个在Apple documentation这个明确的信息:

姿势识别器连接到一个视图

每一个手势识别与一个视图相关联。相比之下,一个 视图可以有多个手势识别器,因为单个视图可能会响应许多不同的手势。对于手势识别器 可以识别出现在特定视图中的触摸,您必须将手势识别器附加到该视图。

首先,您不能将同一UITapGestureRecognizer附加到多个视图。

所以,你的代码将无法正常工作,你必须创建三个UITapGestureRecognizer实例,并有将其附加到意见如下图所示:

UITapGestureRecognizer *singleTapImg1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapping:)]; 

[singleTapImg1 setNumberOfTapsRequired:1]; 

UITapGestureRecognizer *singleTapImg2 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapping:)]; 

[singleTapImg2 setNumberOfTapsRequired:1]; 

UITapGestureRecognizer *singleTapImg3 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapping:)]; 

[singleTapImg3 setNumberOfTapsRequired:1]; 

[_imageOne addGestureRecognizer:singleTapImg1]; 
[_imageTwo addGestureRecognizer:singleTapImg2]; 
[_imageThree addGestureRecognizer:singleTapImg3]; 

现在,您可以使用下面的代码来获得,这ImageView的点击并根据该执行操作:

-(void)singleTapping:(UIGestureRecognizer *)recognizer { 

    if (recognizer.view == _imageOne){ 

     //_imageOne tapped 

    } 
    else if (recognizer.view == _imageTwo) { 

     //_imageTwo tapped 

    }else{ 

     //_imageThree tapped 
    } 

}