Macos NSTableView-如何删除空格键事件侦听器?
在我的Mac应用程序中,我有一个Macos NSTableView-如何删除空格键事件侦听器?,macos,cocoa,nstableview,key-events,Macos,Cocoa,Nstableview,Key Events,在我的Mac应用程序中,我有一个NSTableView。默认行为是单击键盘上的空格键选择一行,事件tableView应选择row 但在我的用例中,我有一个启动和停止音频播放的按钮。我想从NSTableView中删除空格键处理,并将其移动到播放按钮 我尝试引入一个用于播放的菜单项,并为其指定了空格键。然而,这不起作用。每次单击空格键时,NSTableView将启动,而不是菜单项 我的问题是:如何从NSTableView中删除空格键侦听器 提前谢谢。我找到了解决问题的方法 我覆盖了我的NSTable
NSTableView
。默认行为是单击键盘上的空格键选择一行,事件tableView应选择row
但在我的用例中,我有一个启动和停止音频播放的按钮。我想从NSTableView
中删除空格键处理,并将其移动到播放按钮
我尝试引入一个用于播放的菜单项,并为其指定了空格键。然而,这不起作用。每次单击空格键时,NSTableView
将启动,而不是菜单项
我的问题是:如何从NSTableView
中删除空格键侦听器
提前谢谢。我找到了解决问题的方法 我覆盖了我的
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
我找到了解决这个问题的办法 我覆盖了我的
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
可以使用NSTableViewDelegate协议完成此操作,避免了必须将NSTableView子类化:
- (BOOL)tableView:(NSTableView *)tableView shouldTypeSelectForEvent:(NSEvent *)event withCurrentSearchString:(NSString *)searchString {
return ([event.charactersIgnoringModifiers characterAtIndex:0]!=0x20);
}
可以使用NSTableViewDelegate协议完成此操作,避免了必须将NSTableView子类化:
- (BOOL)tableView:(NSTableView *)tableView shouldTypeSelectForEvent:(NSEvent *)event withCurrentSearchString:(NSString *)searchString {
return ([event.charactersIgnoringModifiers characterAtIndex:0]!=0x20);
}
是否尝试将空格键指定为按钮的等效键?你可以在笔尖上这样做。选择按钮。切换到属性检查器。单击键等效字段。按空格键。嗨@KenThomases,这实际上是个好主意,它似乎可以工作。但是,NSTableView仍会激发shouldSelectRow。我需要以某种方式删除触发shouldSelectRow事件的空格。有什么想法吗?记录委托方法的
[NSThread callStackSymbols]
结果,并编辑您的问题以将其包括在内。嗨@Ken,我想我找到了一种方法。我使用自定义类覆盖NSTableView并实现keyDown。现在,我可以重新路由空格键事件,并将NSTableView的所有其他键事件保留在tact中。这非常好。您是否尝试过将空格键指定为按钮的等效键?你可以在笔尖上这样做。选择按钮。切换到属性检查器。单击键等效字段。按空格键。嗨@KenThomases,这实际上是个好主意,它似乎可以工作。但是,NSTableView仍会激发shouldSelectRow。我需要以某种方式删除触发shouldSelectRow事件的空格。有什么想法吗?记录委托方法的[NSThread callStackSymbols]
结果,并编辑您的问题以将其包括在内。嗨@Ken,我想我找到了一种方法。我使用自定义类覆盖NSTableView并实现keyDown。现在,我可以重新路由空格键事件,并将NSTableView的所有其他键事件保留在tact中。那很好用。