Overriding keyDown causes issues to a NSTableView
在我的NSTableView子类MyTableView中,我已覆盖
1 2 3 4 5 6 7 8 | - (void) keyDown:(NSEvent *)event { if ( [event keyCode] == 51 || [event keyCode] == 117 ) { [super keyDown:event]; return; } } |
51是删除按钮的代码。我希望表格视图能够像子类化之前一样删除选定的项目。
已正确捕获事件,并调用了超类的keyDown方法。但是,该项目不再被删除。为什么?
谢谢
建议您在窗口类中覆盖keyDown:。
1 2 3 4 5 6 7 8 9 10 11 12 13 | -(void) keyDown: (NSEvent *) event { NSString *chars = [event characters]; unichar character = [chars characterAtIndex: 0]; if (character == NSDeleteCharacter || character == NSBackspaceCharacter) { NSTableView* view = (NSTableView*)[self firstResponder]; if(view == theTableView) { // do something to delete the item from your data model and reload the tableview } } } |
如果您只想在按下Delete键时调用特定方法,则建议您覆盖
还有
1 2 3 4 5 6 | -(void)deleteBackward:(id)sender { // do my override here // do this only if super implements deleteBackward: [super deleteBackward: sender] } |