2009-07-31 12 views
0

私はこれを数日間試していますが、それを理解できませんでした。NStableview +ココアでマウスイベントが検出されません

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

これで両方のビューにそれぞれのコンテンツを表示することができました。また、outlineviewとtableviewのやりとりは、代理人と通知を使用して行われます。

私の問題は、両方のビューでマウスイベントが検出されるようにして、単一のクリックを選択してダブルクリックしてファイル/フォルダを開き、Ctrl +クリックコンテクストポップアップメニューを有効にします。マウスの出来事は奇妙には検出されていません。

私のデザインは、テーブルとアウトラインビューがそれぞれ独自のビューとコントローラクラスを持ち、通知を使ってそれらの間のやりとりをすることで非常に簡単です。あなたは私が間違っているところを私に示唆してくれますか?

私は、テーブルビューのsetActionとDoubleActionメソッドを使用して、シングルクリックとダブルクリックが動作するようになることがわかっていますが、コントロールのクリックは機能しません。私は、マウスイベントを検出しているいただきました私のアプリの設計が間違って私の意見の非として:(

おかげ

答えて

0

をあなたがコントロールをして押されているかどうかを取得することができます知ってほしい:

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

それともたい場合があります

また、アクションとdoubleActionが機能しない場合は、ターゲット/アクションが

のようなものであることを確認してください。
NSAssert([[theView target] respondsToSelector:[theView doubleAction]], @"target/action is wrong"); 
関連する問題