Ios IBAction按钮触发延迟

Ios IBAction按钮触发延迟,ios,sdk,uibutton,ibaction,Ios,Sdk,Uibutton,Ibaction,我有一个UIButton连接到Interface Builder中的iAction 问题: 动作触发和按钮取消突出显示都需要一点时间 事实: 视图结构: 看法 10个按钮(通过UIControlEventTouchUpInside连接到iAction 视图(子视图) 手势识别器 文本字段 子视图有一个UITapGestureRecognitor,其中delaysTouchesBegan和DelaysToucheSend都设置为NO 该操作正在主线程中发生 测试一个简单的按钮(没

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

问题:

  • 动作触发和按钮取消突出显示都需要一点时间
事实:

  • 视图结构:
    • 看法
      • 10个按钮(通过UIControlEventTouchUpInside连接到iAction
      • 视图(子视图)
        • 手势识别器
        • 文本字段
  • 子视图有一个UITapGestureRecognitor,其中delaysTouchesBegan和DelaysToucheSend都设置为NO
  • 该操作正在主线程中发生
  • 测试一个简单的按钮(没有图像或标题,只有一个简单的NSLog),结果是一样的
问题:
为什么触发和取消突出显示延迟?

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

好的,我认为这是因为
UITapGestureRecognitizer
。请尝试执行以下操作:

  • IBOutlet
    连接到按钮
  • 2.将
    UITapGestureRecognitizer
    委托给您的ViewController

    3.在ViewController中实现此手势委托方法

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

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

    最后,我在某个地方添加了一些UIgestureRecognitor,但忘了将delaysTouchesBegan设置为NO=(

    您用来触发按钮的事件是什么?类有很多方法。但我认为代码并不重要,一旦一个简单的按钮有一个简单的NSLog也有同样的问题…你到底是什么意思,Malek?你用来检测触摸的事件是什么,uicontrolEventTouchInside..UIControlEventTouchDown..等等VentTouchInside编辑了这个问题如果这样做不行,那么我必须知道更多的代码细节才能给你一个成功的答案。好吧,这很奇怪,我不知道为什么和如何。但是清理所有的构建文件夹和项目,解决了。啊,很高兴你找到了答案。当一个项目不能正常工作时,我已经习惯了这样做d我忘了建议。基本上你的模拟器是在缓存代码上运行的。再次编辑问题,@malek,请检查视图结构。这个方法在按下按钮时从不调用,只有在按下另一个子视图时才调用。好吧,这很奇怪,我不知道为什么和如何。但是清理所有的构建文件夹和project,已解决。谢谢!这可能对@NatanR.没有帮助,但这正是我所需要的。@Malek_Jundi,请注意,它不是UICapgestureRecognitizer,而是UIgestureRecognitizerDelegate(第2点)。…您的回答和问题对我帮助很大。在我的例子中,在包含按钮的视图上添加双击手势会延迟按钮反应(操作系统正在等待确保按钮点击不会变成双击)感谢这一点。我能够找到多个手势识别器,导致按钮触碰内部出现相当大的延迟。