gpt4 book ai didi

Objective-C:聆听键盘快捷键并根据它们采取行动

转载 作者:太空狗 更新时间:2023-10-30 03:40:52 27 4
gpt4 key购买 nike

我正在为 Mac OS X 开发一个应用程序,我需要监听键盘快捷键输入以便我可以对它们采取行动。

例如:

  • Updown 键在表格 View 中上下移动。
  • + 掉落一个元素。
  • + + N 创建一个新项目。

它不应该仅限于焦点控件上的事件。

有什么想法吗?

提前致谢。

最佳答案

我认为你最好的选择*是+[NSEvent addLocalMonitorForEventsMatchingMask:handler:] .这将创建一个对象,只要您的应用程序收到指定类型的事件,该对象就会调用 block 处理程序。处理发生在您的 NSApplication 将事件分派(dispatch)到窗口之前,您有机会修改事件或阻止它继续进行。

因此,您可以在键按下事件传递到您的应用程序时捕获它们,并在任何控件有机会看到它们之前对它们进行任何您喜欢的操作。我最初将此发布在 another question 中,但这里有一个使用箭头键操作的片段:

NSEvent * (^monitorHandler)(NSEvent *);
monitorHandler = ^NSEvent * (NSEvent * theEvent){

switch ([theEvent keyCode]) {
case 123: // Left arrow
NSLog(@"Left behind.");
break;
case 124: // Right arrow
NSLog(@"Right as always!");
break;
case 125: // Down arrow
NSLog(@"Downward is Heavenward");
break;
case 126: // Up arrow
NSLog(@"Up, up, and away!");
break;
default:
break;
}
// Return the event, a new event, or, to stop
// the event from being dispatched, nil
return theEvent;
};

// Creates an object we do not own, but must keep track of so that
// it can be "removed" when we're done; therefore, put it in an ivar.
eventMon = [NSEvent addLocalMonitorForEventsMatchingMask:NSKeyDownMask
handler:monitorHandler];

参见 Event-Handling Guide有关您应该如何处理该监视器对象的一些详细信息。具体来说,Apple 显然“不鼓励”在 dealloc 中删除它,但没有给出理由。


*只要您至少需要 Snow Leopard。

关于Objective-C:聆听键盘快捷键并根据它们采取行动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6139751/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com