76

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

タッチイベントでの動作を再定義し、標準に応答しないようにする必要があると思いtouch up insideます。それから私は他のイベントが原因であるのだろうかと思いましたか?touch up insideしかし、iOSライブラリとStackOverflowでイベントリストを見つけることができませんでした。これは、またはの不正な動作に関する質問にすぎませんtouch down

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

  1. タッチキャンセル-ボタンをタッチしても指を離すと、選択が解除されたままになりますか?
  2. タッチダウン-タップして右。
  3. タッチダウンリピート??
  4. タッチドラッグEnter??
  5. ドラッグ出口をタッチしますか?
  6. 内側のドラッグをタッチしますか?
  7. タッチドラッグ外側??
  8. 内側を修正します-範囲内に残っているボタンをタップして放すと。UIButtonsの状態をNormalに変更します。
  9. 外をタッチアップ-ボタンをタップして離すと、境界を離れますか?

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

IBActionsに関する良い記事へのリンクが見つからなかったので、よろしくお願いします。

4

2 に答える 2

151

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

  1. UIControlEventTouchCancel

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

  2. UIControlEventTouchDown

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

  3. UIControlEventTouchDownRepeat

    コントロールで繰り返されるタッチダウンイベント。このイベントの場合、UITouchtapCountメソッドの値は1より大きくなります。

  4. UIControlEventTouchDragEnter

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

  5. UIControlEventTouchDragExit

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

  6. UIControlEventTouchDragInside

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

  7. UIControlEventTouchDragOutside

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

  8. UIControlEventTouchUpInside

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

  9. UIControlEventTouchUpOutside

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

于 2012-07-09T06:30:53.837 に答える
13

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

UIControlEventTouchDown:ユーザーがボタンをタップしました。これは、接触している指/スタイラスで発火します。

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


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

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

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

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

UIControlEventTouchUpOutside:これは単に指/スタイラスが持ち上げられているだけですが、指/スタイラスがボタンの範囲内になくなった場合に限ります。重要なこと(そしておそらく明らかに)は、このイベントをボタンに関連付けるために、ある時点でボタン内にタッチがなければならなかったことです。

注:私の理解では、上記は次の場合に役立ちます。

  1. スライダー:ご想像のとおり、意図的なタッチである可能性がありますが、スワイプアクションが速いため、指の動きが鈍くなり、スライダー領域の外側に持ち上げられる可能性があります。
  2. 指/スタイラスがコンポーネント/オブジェクトの境界に触れたときに移動が発生するように、画面上で物を押すときのように、コンポーネントを移動します。

その他のイベント:

UIControlEventTouchCancel:ユーザーが制御できない何かがタッチアクションをキャンセルしています。これは、電話側で「うまくいかない」ことだと考えてください。

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


参照:

SO 1:UIControlEventTouchDragOutsideとUIControlEventTouchDragExitの違い

SO 2:UIControlEventTouchCancelとは何ですか?

于 2019-04-28T23:42:20.300 に答える