如何检查当前点击哪个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 {
}
答
可以检测使用以下代码:
-(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
}
}
您可以简单地添加标签值的所有imageViews&同时承认,你可以得到标签值可以执行相应的操作。 – iYoung
是的,你可以通过添加标签来实现 – Diksha