【问题标题】:Referencing a button when the action's sender is a UIGestureRecognizer当操作的发送者是 UIGestureRecognizer 时引用按钮
【发布时间】:2011-10-13 16:41:36
【问题描述】:

我有一个名为myButton 的按钮,我给了它一个UIGestureRecognizer,这样IBAction 只有在用两根手指按下myButton 时才会运行:

UIGestureRecognizer  *tapper = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingerTap:)];
[(UITapGestureRecognizer *) tapper setNumberOfTouchesRequired:1];
[newTaskButton addGestureRecognizer:tapper];

在添加手势识别器之前,我可以使用sender 来引用刚刚按下的按钮,但是现在sender 现在是手势识别器。我仍然需要参考按下的按钮......有什么办法可以这样做吗?一个简单的方法可以返回使用手势识别器的任何内容?谢谢!

【问题讨论】:

  • 与问题无关:如果您将声明更改为UITapGestureRecognizer *tapper,则无需将其转换为下一行。

标签: objective-c uigesturerecognizer sender


【解决方案1】:

UIGestureRecognizer 类有一个 view 属性,表示手势识别器附加到的视图,在你的例子中是按钮。

- (void)twoFingerTap:(UIGestureRecognizer *)sender {
    UIButton *myButton = (UIButton *)sender.view;
}

【讨论】:

  • 现在,我不相信它会影响应用程序的性能,但是当我告诉它设置[sender view]title 属性时,我收到@987654326 的警告@ 可能不会回复 setTitle。我知道那是因为编译器不知道[sender view]UIButton。有没有办法让编译器放心,让警告消失?
  • @ghostware 投吧! (请参阅我添加到答案中的代码的 sn-p)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多