web-dev-qa-db-ja.com

UIButtonイベント。違いは何ですか?

ボタンから呼び出されたポップオーバーが表示されている間、ボタンが「押し下げられた」ままであるという問題が発生しました。ポップオーバーは一部のフィルターのセレクターであり、フィルターはボタン自体に表示されます。それをタップすると、ポップオーバーが表示されますが、それは何であれ選択解除されます。

タッチイベントでの動作を再定義し、標準に応答しないようにする必要があると思いますtouch up inside。それから私は他のイベントが何に責任があるのか​​疑問に思いましたか?しかし、iOSライブラリにイベントリストが見つかりませんでした。StackOverflowには、touch up insideまたはtouch down

それでは、タッチイベント間の違いは何ですか?

  1. タッチキャンセル-ボタンをタッチしたまま指を離して、選択を解除したままにしますか?
  2. タッチダウン-タップしてすぐ。
  3. 繰り返しタッチダウン??
  4. タッチドラッグエンター??
  5. ドラッグ出口をタッチ??
  6. タッチドラッグ内部??
  7. 外にドラッグしますか??
  8. 内部を修正します-境界内に残っているボタンをタップして離すとUIButtonsの状態をNormalに変更します。
  9. 外に触れる-ボタンをタップして離すと、境界を離れますか?

他のIBActionsはUIButtonによって送信されませんよね?また、これらのイベントはUIButtonの外観をどのように変更しますか? highlightedまたはselectedが好きですか?

私はそれを見つけることができなかったので、IBActionsに関する良い記事へのリンクをいただければ幸いです。

58
Protheus

UIControlEventsのAppleのドキュメント から:

  1. UIControlEventTouchCancel

    コントロールの現在のタッチをキャンセルするシステムイベント。

  2. UIControlEventTouchDown

    コントロール内のタッチダウンイベント。

  3. UIControlEventTouchDownRepeat

    コントロールで繰り返されるタッチダウンイベント。このイベントでは、UITouchのtapCountメソッドの値は1より大きいです。

  4. UIControlEventTouchDragEnter

    指がコントロールの境界内にドラッグされるイベント。

  5. UIControlEventTouchDragExit

    コントロール内から境界の外側に指をドラッグするイベント。

  6. UIControlEventTouchDragInside

    コントロールの境界内で指がドラッグされるイベント。

  7. UIControlEventTouchDragOutside

    コントロールの境界のすぐ外側に指がドラッグされるイベント。

  8. UIControlEventTouchUpInside

    指がコントロールの境界内にあるコントロールのタッチアップイベント。

  9. UIControlEventTouchUpOutside

    指がコントロールの境界外にあるコントロールのタッチアップイベント。

141
Protheus

通常のボタンの一般的な使用/発生の可能性の順序で、私が考えるものにリストされています:

UIControlEventTouchDown:ユーザーがボタンをタップしました。これにより、指/スタイラスが接触します。

UIControlEventTouchUpInside:ユーザーがボタンをタップしました。これは、画面から引き戻された指/スタイラスの接触で発生します。


コンポーネントの移動など、スライダーやドラッグイベントに便利です。以下は、発生順です。

UIControlEventTouchDragInside:指がボタン領域にドラッグされるとトリガーされます。

UIControlEventTouchDragExit:ドラッグモーション中にトリガーされます。ユーザーの指/スタイラスがボタンの境界を離れるので、一度だけ呼び出されます。

UIControlEventTouchDragOutside:ドラッグモーション中に、 'UIControlEventTouchDragExit'の後、が連続して呼び出されます、元のタッチが続く限り。

UIControlEventTouchUpOutside:これは、指/スタイラスがボタンの境界内になくなった場合にのみ持ち上げられる指/スタイラスです。呼び出すべき重要なことは(おそらくおそらく)タッチは、このイベントをボタンに関連付けるために、ある時点でボタン内になければならなかったことです。

注:私の理解では、上記は以下に役立つ可能性があるということです。

  1. スライダー:ご想像のとおり、タッチは意図的に行われた可能性がありますが、スワイプ操作が速いため、指の動きが粗く、スライダー領域の外側に持ち上がる場合があります。
  2. コンポーネントを移動します。画面上で物事をプッシュするとき、指/スタイラスがコンポーネント/オブジェクトの境界に触れたときに移動するようにします。

その他のイベント:

UIControlEventTouchCancel:ユーザーの制御外の何かがタッチ操作をキャンセルしています。これは、物事の電話側で何かが「うまくいかない」と考えてください。

UIControlEventTouchDownRepeat:ユーザーが怒ってボタンを猛烈にタップしていることを検出したいですか?まだWindowsモードで「ダブルクリック」しようとしているかどうかを検出したいですか?または、ボタンを2回タップすると異なる動作をするボタンを設計したかもしれません。このイベントはそれらすべてに役立ちます!


参照:

SO 1 :UIControlEventTouchDragOutsideとUIControlEventTouchDragExitの違い

SO 2 :UIControlEventTouchCancelとは何ですか?

2
Dave G