8

我有一个 UIButton 连接到 Interface Builder 中的 IBAction。

问题:

  • 按钮的动作触发和取消突出显示都需要一点时间才能发生。

事实:

  • 视图结构:
    • 看法
      • 10 个按钮(通过 UIControlEventTouchUpInside 连接到 IBAction
      • 视图(子视图)
        • 手势识别器
        • 文本域
  • Subview有一个UITapGestureRecognizer,其中delaysTouchesBegan和delaysTouchesEnded都设置为NO
  • 该动作发生在主线程中。
  • 测试一个简单的按钮(没有图片或标题,只有一个简单的 NSLog),结果是一样的

问题: 为什么发射和取消突出显示延迟?

4

3 回答 3

12

最后,我在某处添加了一些 UIGestureRecognizer,忘记将 delaysTouchesBegan 设置为 NO =(

于 2012-08-26T08:34:17.480 回答
7

好的,我认为因为UITapGestureRecognizer.. 尝试执行以下操作:

  1. 连接IBOutlet到您的按钮。

2.将UITapGestureRecognizer委托分配给您的 ViewController。

3.在yourViewController中实现这个手势委托方法

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
       shouldReceiveTouch:(UITouch *)touch {
    return (! [yourButton pointInside:[touch locationInView:yourButton] withEvent:nil]);
}

这将使点击被您的按钮而不是识别器识别。

于 2012-05-10T09:31:46.437 回答
0

确保您的触摸事件设置为按钮的第一次接触,这将是触地事件,否则操作将延迟,直到您选择的任何其他事件完成(即内部修饰,外部修饰等)。

于 2012-05-10T09:21:21.120 回答