UIControlEventTouchUpInside延迟

时间:2013-04-23 12:20:12

标签: ios objective-c uibutton uicontrolevents

我有一个按钮和一个控件事件,如:

[_flashBackButton addTarget:self
                     action:@selector(flashBackButtonCallback:)
           forControlEvents:UIControlEventTouchUpInside];

如果我使用UIControlEventTouchUpInside,在我的选择器被调用之前有一个非常小的延迟(1秒)(在我停止触摸屏幕之后的延迟)。

我试过

[_flashBackButton addTarget:self
                     action:@selector(flashBackButtonCallback:)
           forControlEvents:UIControlEventTouchDown];

立即调用我的选择器。

=>问题是这个按钮用于显示另一个视图控制器,这个长时间的延迟使我们的应用程序感觉无响应。当我与其他众所周知的应用程序(如facebook,twitter等)进行比较时,他们的视图控制器在按下按钮后几乎就会弹出。

有人知道修复方法吗?我不想使用UIControlEventTouchDown

提前感谢您的帮助

观看视频:https://www.dropbox.com/s/kl1sr5jnpzo1i7s/IMG_2865.MOV

2 个答案:

答案 0 :(得分:1)

听起来你在下一个viewController的viewWillAppear方法中有一些东西阻塞主UI线程。在源视图控制器上放置一个NSLog; s动作并查看它是否立即触发,然后将另一个放在目标viewWillAppear方法上。这应该缩小问题的范围。

答案 1 :(得分:1)

好的,我已经弄明白问题是什么:我的按钮是一个uiBarButtonItem,我的uinavigation栏上有一个手势识别器(双击)。这是导致延迟的这种姿势。我已经解决了我的问题:
Click events in UINavigationBar overridden by the gesture recognizer