首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在initWithTarget调用中使用选择器发送参数

在initWithTarget调用中使用选择器发送参数
EN

Stack Overflow用户
提问于 2012-11-24 23:46:40
回答 3查看 1.8K关注 0票数 1

我正在尝试将以下代码精简为一个方法。目前,在8个UIButton实例上使用8种相同的方法处理一次tap。理想情况下,我只想将UIButton作为参数传递给@selector,这样就可以避免需要8个相同的方法。我正在努力解决将参数传递给选择器的语法问题。如果可能的话,我想要一个handleTap: onButton:方法。目前,有8种方法(handleTap1handleTap8)在按钮1到8上执行相同的操作。

代码语言:javascript
复制
UITapGestureRecognizer *tap1 = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector(handleTap1:)];
UITapGestureRecognizer *tap2 = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector(handleTap2:)];
UITapGestureRecognizer *tap3 = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector(handleTap3:)];
UITapGestureRecognizer *tap4 = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector(handleTap4:)];
UITapGestureRecognizer *tap5 = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector(handleTap5:)];
UITapGestureRecognizer *tap6 = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector(handleTap6:)];
UITapGestureRecognizer *tap7 = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector(handleTap7:)];
UITapGestureRecognizer *tap8 = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector(handleTap8:)];
[let1Button addGestureRecognizer: tap1];
[let2Button addGestureRecognizer: tap2];
[let3Button addGestureRecognizer: tap3];
[let4Button addGestureRecognizer: tap4];
[let5Button addGestureRecognizer: tap5];
[let6Button addGestureRecognizer: tap6];
[let7Button addGestureRecognizer: tap7];
[let8Button addGestureRecognizer: tap8];

这是其中一个方法的例子,显然我想用一个传入的参数替换let1Button来表示任何按钮。

代码语言:javascript
复制
- (void) handleTap1: (UITapGestureRecognizer *) recognizer
{
    [_box setText: [_box.text stringByAppendingString: [let1Button titleForState: UIControlStateNormal]]];
    [let1Button setUserInteractionEnabled:NO];
    [let1Button setTitleColor: [UIColor blackColor] forState: UIControlStateNormal];

}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-25 00:00:22

UIView(UIButtonUIView的子类)有一个属性view。它是手势识别器附加到的视图

代码语言:javascript
复制
UITapGestureRecognizer *tap1 = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector(handleTap:)];
[let1Button addGestureRecognizer: tap1];

- (void) handleTap: (UITapGestureRecognizer *) recognizer
{
    UIButton *button = (UIButton *)recognizer.view;
    [_box setText: [_box.text stringByAppendingString: [UIButton titleForState: UIControlStateNormal]]];
    [UIButton  setUserInteractionEnabled:NO];
    [UIButton setTitleColor: [UIColor blackColor] forState: UIControlStateNormal];

}
票数 4
EN

Stack Overflow用户

发布于 2012-11-24 23:52:37

手势识别器有一个属性视图。您可以检查它,以确定手势是在哪个按钮上执行的。

票数 1
EN

Stack Overflow用户

发布于 2012-11-25 00:01:45

手势识别器作为参数传递给操作。在action方法中,您可以访问视图。

代码语言:javascript
复制
UIView myView = recognizer.view
if (myView isKindOfClass:[UIButton class])
{
   ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13542748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档