0
我有一個NSTableView
,我的默認行爲有一些問題。覆蓋keyDown:在NSTableView類別中禁用箭頭鍵處理
如果我重寫在一個類別keyDown:
方法如下:
- (void) keyDown:(NSEvent *)event {
[super keyDown:event];
}
我不能改變使用鍵盤上的箭頭鍵行選擇了。這是爲什麼?
我有一個NSTableView
,我的默認行爲有一些問題。覆蓋keyDown:在NSTableView類別中禁用箭頭鍵處理
如果我重寫在一個類別keyDown:
方法如下:
- (void) keyDown:(NSEvent *)event {
[super keyDown:event];
}
我不能改變使用鍵盤上的箭頭鍵行選擇了。這是爲什麼?
屬於NSTableView類別。
在的NSTableView
一個類別,super
指NSTableView
的超類(NSControl
),而不是NSTableView
因爲它會在一個子類。您將事件傳遞到keyDown:
的NSControl
版本,該版本對錶格視圖一無所知,並且無法按照您的方式處理箭頭鍵。
如果您覆蓋類別中的方法,則無法調用原始方法。在框架類(它的源代碼不可用)上執行此操作幾乎不是一個好主意。使用一個子類。
參考Using Super in an Objective C Category?和Is calling super in a category the same as calling it in a subclass?
你在哪裏覆蓋你的視圖控制器的方法? – 2011-12-19 15:29:14
不,在NSTableView的類別中。我沒有寫入類別,但是 - (void)keyDown:(NSEvent *)事件方法在那裏被覆蓋。 – aneuryzm 2011-12-19 15:43:20