ボタンがあるとしましょう。両方が私のIBActionを呼び出す場合、シングルクリックとダブルクリックをどのように区別できますか?どのイベントが呼び出しを引き起こしたかを知る方法、またはイベントのタイプごとに1つずつ異なるアクションを設定する方法はありますか?
3 に答える
編集:
Cocoa、afaikでは、各コントロールには、応答する一種の「固定」イベントがあります。ダブルクリックを管理するには、クリック数に関する情報を取得するメソッドmouseUp
またはをオーバーライドする必要があります。mouseDown
- (void)mouseUp:(NSEvent*)event {
NSInteger count = [event clickCount];
<do_something_depending_on:count];
}
古い答え:
Interface Builderでコントロールのアクションタブを表示し、適切なイベントタイプをコントローラーアクションに接続することで、同じコントロールに関連付けられた複数のIBActionを定義できます。添付の画像をご覧ください。より明確になることを願っています。ボタンで利用可能なイベントが表示されます。
現在処理されているイベントをアプリケーションに問い合わせることができます。マウスクリックの場合、これにはクリック数が含まれます。
フルキーボードアクセス(ボタンにフォーカスしてスペースバーを押す)やVoiceOver(ボタンにVOカーソルを置いて押すアクションを使用する)など、マウスクリック以外の理由でボタンでもアクションが発生する可能性があることに注意してください。あなたのアクションがマウスに反応して呼び出されたとは思わないでください。
私が正しく理解している場合は、UIControlEventsTouchUpInsideを使用するワンクリックと2クリックのUIControlEventsTouchDownRepeat(コントロールで繰り返されるタッチダウンイベント。このイベントでは、UITouch tapCountメソッドの値が1より大きい)に対して2つの異なるIBActionを作成する必要があります。