在我的Mac应用程序中,我有一个NSTableView
。默认行为是单击键盘上的空格键,选择行和事件tableView shouldSelectRow
。
在我的用例中,我有一个启动和停止音频播放的按钮。我想从NSTableView
中移除空格键处理并将其移至播放按钮。
我尝试引入一个用于播放的菜单项,并为其分配了空格键。但这不起作用。每次单击空格键时NSTableView
都会触发,而不是菜单项。
我的问题是:如何从NSTableView
?
提前感谢。
答案 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