IBAction UIButton射击延迟

时间:2012-05-10 09:03:32

标签: ios sdk uibutton ibaction

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

问题:

  • 按钮的动作触发和去高亮都需要一点点发生。

事实:

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

问题: 为什么射击和去突然显示延迟?

3 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:6)

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

  1. IBOutlet与您的按钮相关联。
  2. 2.将UITapGestureRecognizer委托给你的ViewController。

    3.在yourViewController

    中实现此手势委托方法
    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
           shouldReceiveTouch:(UITouch *)touch {
        return (! [yourButton pointInside:[touch locationInView:yourButton] withEvent:nil]);
    }
    

    这样可以将按钮识别为按钮而不是识别器。

答案 2 :(得分:0)

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