0

分割ビューを含むウィンドウがあります。「スプリット」の1つには、アウトラインビューが含まれています。私はウィンドウコントローラー(ウィンドウのXIBのファイル所有者)を持っています。ウィンドウコントローラは、アウトラインビューのデリゲートおよびデータソースです。

ウィンドウコントローラでメソッドを呼び出すと-(void)mouseDown:(NSEvent *)e、ツールバーのみがメソッドに応答します。アウトラインビューは応答しません。

アウトラインビューのマウスイベント(たとえば、mouseDown)を取得するにはどうすればよいですか?

4

1 に答える 1

1

アウトラインビューのマウスイベントを取得するには:

  1. アウトラインビューをサブクラス化します。
    • Interface Builder(IB)>ライブラリパネル>クラスタブでNSOutlineViewを選択します
    • NSOutlineViewを右クリックして、[新しいサブクラス...]を選択します。
    • [ソースファイルの生成]を選択して次のポップアップウィンドウに入力し、プロジェクトにファイルを追加します
    • NSOutlineViewを選択します
    • インスペクターパネル>IDタブ>クラスID>クラスで新しいクラスを選択します
  2. マウスイベントメソッドを実装する

    • Xcodeで>アウトラインビューの新しいサブクラス>実装(.m)ファイルにメソッドを入力します。例:

      (void)mouseDown:(NSEvent *)theEvent {
          /* CODE YOU WANT EXECUTED WHEN MOUSE IS CLICKED */
          NSLog(@"Mouse down occurred");
          // call this to get the usual behaviour of your outline
          // view in addition to your custom code
          [super mouseDown:theEvent];
      }
      

を使用してマウスイベントを取得できることを知っておくと便利な場合があります[NSEvent modifierFlags]。これは、アウトラインビューだけでなく、アプリ全体のビューでも機能します。たとえば、ウィンドウコントローラ(質問で参照)に、次のようなコードを含めることができます。

if ([NSEvent modifierFlags] == NSAlternateKeyMask) { // if the option key is being pressed
            /*SOME CODE*/
}
于 2012-06-26T09:33:19.667 に答える