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スレッドをブロックしているようです。ソースviewController;sアクションにNSLogを配置し、すぐに起動するかどうかを確認してから、宛先viewWillAppearメソッドに別のものを配置します。それは問題を絞り込むはずです。

于 2013-04-23T12:43:43.333 に答える
1

OK、私は問題が何であったかを理解しました:
私のボタンは uiBarButtonItem で、uinavigation バーにジェスチャ認識機能 (ダブルタップ) があります。
これが、レイテンシーの原因となったこのジェスチャでした。問題を修正しました:
UINavigationBar のイベントをクリックすると、ジェスチャ認識エンジンによってオーバーライドされます

于 2013-04-25T07:54:49.027 に答える