1

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

[_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

4

2 回答 2

1

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

于 2013-04-23T12:43:43.333 回答
1

好的,我已经弄清楚了问题所在:
我的按钮是一个 uiBarButtonItem,我的导航栏上有一个手势识别器(双击)。
这就是导致延迟的手势。我已经解决了我的问题:
UINavigationBar 中的单击事件被手势识别器覆盖

于 2013-04-25T07:54:49.027 回答