0

私は過去数日間これを試してきましたが、理解できませんでした。

NSOutlineView と NSTableView を持つアプリケーションがあります。Outlineview は入力パスを受け取り、サブコンテンツのツリー構造の形式で表示します。そのため、ユーザーがアウトライン ビューで特定のフォルダをクリックすると、そのフォルダの内容がテーブル ビューに表示され、その属性がリスト形式で表示されます。

これで、両方のビューにそれぞれのコンテンツを表示できるようになりました。アウトラインビューとテーブルビューの間のやり取りは、デリゲートと通知を使用して行われます。

今私の問題は、両方のビューでマウスイベントを検出して、シングルクリックで選択、ダブルクリックでファイル/フォルダーを開くこと、およびコントロール+クリックでコンテキストを有効にすることで、アプリをよりインタラクティブにすることです。ポップアップメニュー。しかし奇妙なことに、マウスイベントは検出されません。

私のアプリの設計は非常にシンプルで、テーブル ビューとアウトライン ビューのそれぞれに独自のビューとコントローラー クラスがあり、通知を使用してそれらの間のやり取りが行われます。私が間違っているところを教えてください。

テーブルビューのsetActionおよびDoubleActionメソッドを使用してシングルクリックとダブルクリックを機能させることができることはわかっていますが、コントロールクリックを機能させることはできません。ビューのどれもマウスイベントを検出していないため、アプリの設計に何が問題なのかを知りたい:(

ありがとう

4

1 に答える 1

0

Control が押されているかどうかを取得するには、次のようにします。

if([[NSApp currentEvent] modifierFlags] & NSControlKeyMask){
    //control was pressed at the time the event was posted
}

または、NSTableView/NSOutlineView をサブクラス化し、mouseDown: をオーバーライドして、イベントを直接取得することもできます。

また、アクションと doubleAction が機能しない場合は、次のような方法でターゲット/アクションが正しいことを確認してください。

NSAssert([[theView target] respondsToSelector:[theView doubleAction]], @"target/action is wrong");
于 2009-08-01T07:21:20.790 に答える