【问题标题】:How can I detect Escape key pressed in NSOutlineView?如何检测在 NSOutlineView 中按下的 Escape 键?
【发布时间】:2013-10-22 11:42:36
【问题描述】:

我创建了简单的 cocoa 应用程序。我在其中使用 NSOutlineView。现在我的任务是让 Escape Key 被按下。在我的 appdelegate.m 中,我为 NSOutlineView 实现了所有 require 方法。

【问题讨论】:

    标签: objective-c macos cocoa nsoutlineview


    【解决方案1】:

    SubClass 你的 NSOutlineView 并将它的按键按下事件捕获为:

    - (void)keyDown:(NSEvent *)theEvent
    {       
        switch([theEvent keyCode]) 
        {
            case 53: // esc
                NSLog(@"ESC");
                // Implement the functionality you want when esc is pressed
    
                break;
    
            default:
               [super keyDown:theEvent];
        }
    }
    

    【讨论】:

    • 谢谢。我通过对 nsoutlineview 进行子类化来了解这种方式。但我只想使用 Appdelegate.m。我也尝试过使用 NSControlTextDidChangeNotification。当文本字段不为空时,这给了我转义事件。当文本字段为空/空白时,一切都是徒劳的。
    • 在这种情况下,您可以尝试注册一个全局 keydown 事件,检查按下的键是否为 Esc 并且您的应用程序位于最前面。如果是,则实现您的功能。
    • 您可以将全局键事件注册为:[NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask handler:^(NSEvent *event){//your code here}];
    • 谢谢。但是做 iPhone 编程比做 mac 编程更好。至少谷歌提供了很多选项来解决问题。 Mac 编程对于新手来说资源有限。
    【解决方案2】:

    好吧,您可以找出是否按下了转义键,尝试在下面一行并在您的方法中需要它的地方使用:-

    NSUInteger flags = [theEvent keycode];
    //After that 
    
    If (flags==53)
    {
    
    NSlog(@"Escape key pressed");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-17
      • 2014-07-29
      • 2013-04-07
      • 2018-02-15
      • 1970-01-01
      • 2011-02-26
      • 2018-09-24
      • 2014-09-03
      相关资源
      最近更新 更多