10

誰かがこれら2つの方法の高レベルの違いを説明できますか? 特に、どのような場合にどちらか一方を使用しますか?また、これらのメソッドの目的に関して重複する部分はありますか? それらは同じ目的を果たしているように見えますが、ドキュメントではまったく関連していないようです。これは私を混乱させます.

4

3 に答える 3

4

今日これに出くわしたばかりですが、重要な違いは、beginTrackingWithTouch と友人は追跡専用であり、他のものではなく、特にターゲット/アクション処理用ではないことだと思います。したがって、touchesBegan をオーバーライドする場合は、タッチが終了したときに sendActionsForControlEvents を呼び出す責任もあります。ただし、beginTrackingWithTouch を使用すると、無料で処理されます。

これは、beginTrackingWithTouch (カスタム ボタン コントロール用) を実装して、touchesBegan を処理するための横方向の置き換えにすぎないと考えて発見しました。endTrackingWithTouch では、touchInside が true の場合に sendActionsForControlEvents を呼び出しました。最終結果は、最初に組み込みメカニズムがアクションを送信し、次に私がそれを呼び出したため、アクションが 2 回呼び出されました。私の場合、強調表示のカスタマイズに興味があるだけなので、sendActionsForControlEvents への呼び出しを取り出しましたが、すべて問題ありません。

概要: 追跡をカスタマイズするだけでよい場合は beginTrackingWithTouch を使用し、ターゲット/アクションの処理 (またはその他の低レベルの詳細) もカスタマイズする必要がある場合は touchesBegan を使用します。

于 2016-03-03T18:36:08.220 に答える
0

Apple のドキュメントを正しく理解している場合:

beginTracking:
提供されたイベント情報を使用して、コントロールのどの部分がヒットしたかを検出し、初期状態情報を設定します

したがって、それは制御状態の構成のためのものです。


touchesBegan:
多くの UIKit クラスがこのメソッドをオーバーライドし、対応するタッチ イベントを処理するために使用します

このメソッドは、タッチ イベントの処理に適しています。

于 2019-06-16T11:11:30.383 に答える