NSTableView - 如何删除空格键事件侦听器?

时间:2015-01-14 23:42:46

标签: macos cocoa nstableview key-events

在我的Mac应用程序中,我有一个NSTableView。默认行为是单击键盘上的空格键,选择行和事件tableView shouldSelectRow

在我的用例中,我有一个启动和停止音频播放的按钮。我想从NSTableView中移除空格键处理并将其移至播放按钮。

我尝试引入一个用于播放的菜单项,并为其分配了空格键。但这不起作用。每次单击空格键时NSTableView都会触发,而不是菜单项。

我的问题是:如何从NSTableView

中删除空格键侦听器

提前感谢。

2 个答案:

答案 0 :(得分:2)

可以使用NSTableViewDelegate协议完成,避免必须继承NSTableView:

- (BOOL)tableView:(NSTableView *)tableView shouldTypeSelectForEvent:(NSEvent *)event withCurrentSearchString:(NSString *)searchString {
    return ([event.charactersIgnoringModifiers characterAtIndex:0]!=0x20);
}

答案 1 :(得分:1)

我找到了解决问题的解决方案。

我覆盖了我的NSTableView并实施了keyDown事件,我可以拦截空格键事件。

@implementation AudioFileTableView

- (void)drawRect:(NSRect)dirtyRect {
    [super drawRect:dirtyRect];

    // Drawing code here.
}

-(void)keyDown:(NSEvent *)theEvent{

    unichar key = [[theEvent charactersIgnoringModifiers] characterAtIndex:0];

    if(key == 0x0020)
    {
        // handle the spacebar event
        return;
    }

    [super keyDown:theEvent];
}

@end