2010-11-02 100 views
3

我有一個基於文檔的Cocoa應用程序和一個TextView,我想捕獲它的點擊,所以我試圖攔截Window事件,如mouseDown,mouseUp等,然後將它們與我的TextView中。在NSDocument中捕獲窗口事件

我試了兩件事情:

1)我做了TextView的我的文檔的窗口中的起始第一響應者,並推翻我的文檔類的mouseDown事件,但它不打。

2.)我分類NSWindow並重寫mouseDown,並將該子類設置爲我的文檔xib中的Window類。那個事件也沒有發生。

我注意到窗口的委託已經設置爲我的文件的所有者這是我的NSDocument子類。如果我的文檔子類是我的窗口的委託,爲什麼事件不會觸發我的NSDocument?

回答

2

目前尚不清楚爲什麼您會期望NSDocument在窗口中處理視圖的-mouseDown:events。 NSDocument不響應-mouseDown :. NSTextView(顧名思義)是NSView的子類,它是NSResponder的子類,確實對響應了-mouseDown :.

你應該給Cocoa Event-Handling Guide一個很好的閱讀。

你也不清楚你爲什麼要處理這些事件並將它們傳遞給你自己。可可爲你提供所有這些東西,並且可能會做得更好。你應該澄清你的總體目標(如「你爲什麼要攔截點擊並將它們轉發給你自己?」) - 可能有更好的(也可能更容易)完成它。

+0

謝謝。當我瀏覽NSTextView在IB中接收到的操作時,我沒有看到mouseDown,因此我認爲我必須在窗口上處理它。我將NSTextView分類爲處理mouseDown事件,它的工作方式與我期望的相同。謝謝! – Donald 2010-11-03 00:19:39

+0

歡迎。理解Cocoa的事件處理(包括響應者鏈和視圖層次)絕對是值得的。沒有這個,你會錯過大部分大局。 – 2010-11-03 15:53:19