【问题标题】:Overriding keyDown in NSWindowController with NSTableView | responding to spacebar用 NSTableView 覆盖 NSWindowController 中的 keyDown |响应空格键
【发布时间】:2019-10-25 06:18:52
【问题描述】:

所以我在NSWindowController 中有一个NSTableView。当我按空格键时,它会通过NSResponder 并停在NSWindow 上,它在NSTableView (NSControl) 上调用performClick: 所有其他关键事件都在NSWindowController 中处理。如何捕捉空格键事件?

//NSWindowController
- (void)keyDown:(NSEvent *)event
{
    if ([[event charactersIgnoringModifiers] isEqual:@" "]) {
        [self togglePreviewPanel:self];
    } else {
        [super keyDown:event];
    }
}

【问题讨论】:

    标签: macos nstableview nswindowcontroller nsevent


    【解决方案1】:
    Try with this
    
    
     - (void)keyDown:(NSEvent *)event
        {
            if ([event KeyCode]==48) {
                [self togglePreviewPanel:self];
            } else {
                [super keyDown:event];
            }
        }
    

    //如果 KeyDown 事件不起作用,请尝试使用 'keyUp' 事件。

    【讨论】:

    • 欢迎堆栈溢出。你的解决方案和我的有什么不同?我想在 NSWindowController 中捕捉空格键。你试过你的代码吗?没有太多评论为什么这应该起作用。
    • 您好,您可以将该方法放入您的实现中,对我而言 KeyDown 不起作用,建议您使用 Keyup,我觉得事件 keyCode 比尝试使用 charactersIgnoringModifiers 更好。
    • 1. “我觉得”不是很科学,也没有知识或文档支持。顺便说一句,底层框架功能相同。 2. 从技术上讲,您对 NSWindowController 中的 keyUp 是正确的。但是,您的技术写作需要改进很多。 PS:“把那个方法放在你的实现中”很模糊,没有回答问题把它放到 NSWindowController (子类)中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多