如何在不覆盖NSTableView的实现方法keyDown的情况下捕获键盘事件?

时间:2014-07-11 14:45:25

标签: objective-c nstableview keydown appkit

我已经实现了一个继承自NSTableView的自定义类MyTableView。 然后我在我的.xib文件中添加了两个自定义表视图。 我想要做的是使用箭头键(左和右)浏览两个表。选定的行只是从一个表到另一个表(我不知道我是否清楚)

而不是覆盖KeyDown方法,这会让我重新实现所有内容(我认为懒惰是编程中的一个好习惯:)),我只想说经典的keyDown方法被称为“嘿,如果按下的键是向左或向右箭头,更改表格视图并选择适当的行。)

我有一个MyTableViewController来控制MyTableView类。我是否可以在此类中捕获keyDown事件并处理这些事件(同样不更改MyTableView中的KeyDown方法)?

一般来说,有没有办法从方法继承而不再写一切?像班级一样?您不必使用遗传重新创建所有类的行为,使用方法这样做会非常酷。

1 个答案:

答案 0 :(得分:0)

您可以通过使用左箭头键创建菜单来完成此操作。我相信这实际上是一种推荐的键命令方法,因为这会使命令对用户可见。这是一个例子。

SEL         s1  =   NSSelectorFromString(@"test1:");    
unichar     c1  =   NSLeftArrowFunctionKey;
NSMenuItem* m4  =   [[NSMenuItem alloc] initWithTitle:@"Test 1" action:s1 keyEquivalent:[NSString stringWithCharacters:&c1 length:1]];

[m4 setKeyEquivalentModifierMask:0];  // Remove need for command key.

将此菜单添加到主菜单。