私はにを持っており、NSTextView
プログラムでサブクラスをのサブビューとしてNSScrollView
挿入しています。これはオーバーレイとして機能し、その下のテキストに関するグラフィック情報を重ね合わせます。NSView
NSTextView
NSView
テキストビューが右クリックに反応しないことに気付くまでは、かなりうまく機能していると思いました。他の操作(編集、選択)は問題なく機能しているようです。
また、ファーストレスポンダーがスクロールビューの兄弟(たとえば、アウトラインビュー)に変更された場合、テキストビューはクリックしてもファーストレスポンダーのステータスを取り戻しません。クリックに応じて選択範囲が変わりますが、選択範囲のハイライトは青ではなく灰色になります(テキストビューが最初の応答者ではないことを示します)。
オーバーレイサブビューのフレームをオフセットすると、テキストビューは、オーバーレイが重なっていない領域で100%正常に動作しますが、上で概説したように、重なっている領域は正しく動作しません。
Mac OS X 10.6.4でこの動作を再現する手順:
- 昔ながらの非ドキュメントベースのCocoaアプリを作成します。
- `NSTextView'IBOutletをアプリデリゲート.hに追加します。
NSTextView
MainMenu.xibのウィンドウにを追加します。textViewアウトレットを接続します。- コードを少し入力します。
のapplicationDidFinishLaunching:
NSView *overlay = [[NSView alloc] initWithFrame:textView.bounds];
[textView addSubview:overlay];
[overlay release];
アプリを実行し、テキスト領域の右クリックが正常に機能しないことを確認します。それでも、テキストビューを操作することはできます。
次に、xibのウィンドウにNSOutlineViewを追加します。オーバーレイが配置された状態でフォーカスがテキスト領域を離れると(アウトラインビューをクリックした場合)、フォーカスをテキストビューに戻すことはできません(再びファーストレスポンダーになることはありません)。
オーバーレイがファーストレスポンダーまたはマウスイベントを受け入れないNSTextView
場合でも、がすべてのイベントを受信できるようにする方法はありますか?NSView
これはフィールドエディタに関連しているのではないかと思います。おそらく、オーバーレイビュー宛てのイベントを無視しているのでしょうか。