0

我有一個NSTableView,我的默認行爲有一些問題。覆蓋keyDown:在NSTableView類別中禁用箭頭鍵處理

如果我重寫在一個類別keyDown:方法如下:

- (void) keyDown:(NSEvent *)event { 
    [super keyDown:event]; 
} 

我不能改變使用鍵盤上的箭頭鍵行選擇了。這是爲什麼?

+0

你在哪裏覆蓋你的視圖控制器的方法? – 2011-12-19 15:29:14

+0

不,在NSTableView的類別中。我沒有寫入類別,但是 - (void)keyDown:(NSEvent *)事件方法在那裏被覆蓋。 – aneuryzm 2011-12-19 15:43:20

回答

7

屬於NSTableView類別。

在的NSTableView一個類別,superNSTableView的超類(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?