8

InterfaceBuilderのIBActionに接続されたUIButtonがあります。

問題:

  • アクションの起動とボタンのハイライト解除は、どちらも少し時間がかかります。

事実:

  • ビューの構造:
    • 意見
      • 10個のボタン(UIControlEventTouchUpInsideを介してIBActionに接続)
      • ビュー(サブビュー)
        • ジェスチャレコグナイザー
        • テキストフィールド
  • サブビューにはUITapGestureRecognizerがあり、delaysTouchesBeganとdelaysTouchesEndedの両方がNOに設定されています
  • アクションはメインスレッドで発生しています。
  • 単純なボタン(画像やタイトルがなく、単純なNSLogのみ)をテストすると、結果は同じになります。

質問: なぜ発砲とハイライト解除が遅れるのですか?

4

3 に答える 3

12

最後に、UIGestureRecognizerをどこかに追加し、delaysTouchesBeganをNO =(

于 2012-08-26T08:34:17.480 に答える
7

わかりましたUITapGestureRecognizer。..次のことを試してみてください。

  1. IBOutletボタンに接続します。

2.UITapGestureRecognizerデリゲートをViewControllerにアッシングします。

3.yourViewControllerにこのジェスチャデリゲートメソッドを実装します

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

これにより、タップが認識機能ではなくボタンに認識されるようになります。

于 2012-05-10T09:31:46.437 に答える
0

タッチイベントがボタンの最初の接触に設定されていることを確認してください。これがタッチダウンイベントになります。そうしないと、選択した他のイベントが完了するまでアクションが遅延します(つまり、内側のタッチアップ、外側のタッチアップなど)。

于 2012-05-10T09:21:21.120 に答える