2009-07-20 5 views
3

NSTableViewで複数の選択動作を実現する方法はありますか?クリックするときにコマンドボタンを押し続ける必要はありませんか?これは、HandleControlClick()関数の呼び出し時にマウスダウン処理中にcmdKey修飾子フラグをORすることで、Carbonリストボックスで簡単に実行できました。私はCocoaを初めて使用しています。イベントをプログラマチックに簡単に変更する方法や、これが最善の解決策であるかどうかはわかりません。コマンドキーを使用しないCocoaのNSTableViewでの複数の選択

+0

テーブルビューにチェックボックス列を追加して、複数のアイテムを選択する方法をユーザーに明確にすることを検討しましたか?私は、デフォルトのクリック動作を無効にすると、それらを混乱させ、心配してしまうのではないかと心配しています。たとえば、すべてのアイテムの選択を解除するにはどうすればよいですか? – Alex

+0

アレックス、私は一般的には間違いありません。この特定のケースでは、それはウインドウ内のいくつかの他のアフォーダンスを考えればうまくいく。 –

答えて

4

NSTableViewをサブクラス化し、テーブルビューをこのサブクラスのインスタンスにします。サブクラスでは、NSCommandKeyMaskフラグを修飾フラグにOREDし、新しいイベントをsuperまで渡すだけで、受け取ったマウスイベントに基づいて新しいマウスイベントを作成することによって、mouseDown:mouseUp:の両方に応答します。

ただし、複数のアイテムを選択できることがユーザーには分かりやすいことを願っています。また、Shiftキーを壊さないでください。連続した選択がまだ有効であることを確認してください。

+0

ありがとうピーター!私はサブクラスのmouseDownに応答して、受け取ったmouseDownイベントに基づいて新しいmouseDownイベントを作成し、NSShiftKeyMaskが設定されているかどうかに基づいてNSCommandKeyMaskでORingを行いました。それはちょうど素晴らしい作品です。 –

+0

ああ、そうです。マウスはキーではなく、私が意味したものです。私はそれに応じて私の答えを編集しました。 –

関連する問題