我有一系列使用标签识别的图像视图。我为图像添加了一个轻击手势。
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(selectImage:)];
[tableGridImage addGestureRecognizer:singleTap];
tableGridImage.userInteractionEnabled = YES;
[singleTap release];
这设法调用selectImage选择器ok,但将手势作为发送者传递。我需要将imageview作为发件人,这样我才能获得标签。
关于如何获取imageview及其标签的任何想法?
答案 0 :(得分:53)
我想出了如何获取标签,这对我来说是问题中最重要的部分。由于手势是发件人,我发现附加的视图随之发送:
[(UIGestureRecognizer *)sender view].tag
如果有人能告诉我如何通过UITapGestureRecognizer选择器发送参数,我仍然很好奇。
答案 1 :(得分:26)
您可以通过UITapGestureRecognizer选择器发送的唯一参数是UITapGestureRecognizer本身如下:
确保在选择器名称之后加上“:”,就像之前一样:
UITapGestureRecognizer *singleTap =
[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(selectImage:)];
然后向selectImage添加一个参数,以便您可以按如下方式检索View:
-(void) selectImage:(UITapGestureRecognizer *)gestureRecognizer{
//Get the View
UIImageView *tableGridImage = (UIImageView*)gestureRecognizer.view;
}
答案 2 :(得分:4)
从@ dysan819回答,我设法得到没有标签的对象。在我的情况下是UILabel
。
- (void)labelTap:(id)sender {
NSLog(@"tap class: %@", [[(UIGestureRecognizer *)sender view] class]);
if ([[(UIGestureRecognizer *)sender view] isKindOfClass:[UILabel class]]) {
UILabel *lb = (UILabel*)[(UIGestureRecognizer *)sender view];
NSLog(@"tap: %@", lb.text);
}
}
答案 3 :(得分:2)