UITapGestureRecognizer选择器,sender是手势,而不是ui对象

dys*_*819 47 objective-c selector gestures ios

我有一系列的图像视图,我使用他们的标签识别.我为图像添加了一个轻击手势.

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(selectImage:)];
[tableGridImage addGestureRecognizer:singleTap];
tableGridImage.userInteractionEnabled = YES;
[singleTap release];
Run Code Online (Sandbox Code Playgroud)

这设法调用selectImage选择器ok,但将手势作为发送者传递.我需要将imageview作为发件人,这样我才能获得标签.

关于如何获得imageview及其标签的任何想法?

dys*_*819 54

我想出了如何获取标签,这对我来说是问题中最重要的部分.由于手势是发件人,我发现附加的视图随之发送:

[(UIGestureRecognizer *)sender view].tag
Run Code Online (Sandbox Code Playgroud)

如果有人能告诉我如何通过UITapGestureRecognizer选择器发送参数,我仍然很好奇.


Sam*_*djo 27

您可以通过UITapGestureRecognizer选择器发送的唯一参数是UITapGestureRecognizer本身,如下所示:

确保在选择器名称之后加上" : ",就像之前一样:

UITapGestureRecognizer *singleTap = 
[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(selectImage:)];
Run Code Online (Sandbox Code Playgroud)

然后向selectImage添加一个参数,以便您可以按如下方式检索View:

-(void) selectImage:(UITapGestureRecognizer *)gestureRecognizer{

    //Get the View
    UIImageView *tableGridImage = (UIImageView*)gestureRecognizer.view;
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的解释,Samidjo!另外需要注意的是,我发现在视图中添加自己的属性很有用 - "@property(weak,nonatomic)id relatedObject`.这样,您可以通过将其分配给视图的属性来有效地传入任何您想要的内容!:d (2认同)