我有一個NSTextView
在NSScrollView
,並且我編程插入NSView
子類作爲NSTextView
的子視圖。這NSView
充當疊加層,疊加關於其下的文本的圖形信息。NSTextView疊加造成第一響應者狀態的怪異
我認爲它工作得很好,直到我注意到文本視圖不響應右鍵單擊。其他操作(編輯,選擇)似乎工作得很好。另外,如果第一響應者被更改爲滾動視圖的同級(例如大綱視圖),則文本視圖不會從點擊它的狀態中重新獲得第一響應者狀態。選擇將響應點擊而改變,但選擇高亮顯示爲灰色而不是藍色(表示文本視圖不是第一響應者)。
如果我偏移了疊加子視圖的框架,文本視圖在未與疊加層重疊的區域中表現爲100%,但重疊區域的行爲不正確,如上所述。
步驟要複製在Mac OS X 10.6.4此行爲:
- 創建一個普通的老式非基於文檔Cocoa程序。
- 將「NSTextView」IBOutlet添加到應用程序委託.h。
- 在MainMenu.xib的窗口中添加一個
NSTextView
。連接textView插座。 - 鍵入一些代碼:
在applicationDidFinishLaunching:
NSView *overlay = [[NSView alloc] initWithFrame:textView.bounds];
[textView addSubview:overlay];
[overlay release];
運行應用程序時,觀察到在文本區域點擊右鍵不起作用,因爲它應該,但你仍然可以以其他方式進行交互與文本視圖。
接下來,將NSOutlineView添加到xib中的窗口。觀察到一旦焦點離開文本區域(如果您點擊大綱視圖)並且疊加就位,則無法將焦點設置迴文本視圖(它不會再次成爲第一響應者)。
有一些辦法可以使NSTextView
接收所有的事件,儘管我NSView
覆蓋不接受第一個響應或鼠標事件?我懷疑這可能與字段編輯器有關 - 也許它忽略了它認爲註定要覆蓋視圖的事件?
需要更多上下文(可能是代碼)。 – 2010-10-28 19:26:09
你能更詳細地描述你認爲缺少的東西嗎? – 2010-10-28 19:50:33
原來,在從頭構建的應用程序中複製它非常簡單。我已經添加了重現步驟。 – 2010-10-28 20:23:13