gpt4 book ai didi

objective-c - 在包含多个 NSTextField 的窗口中捕获空格键

转载 作者:行者123 更新时间:2023-12-03 16:35:25 25 4
gpt4 key购买 nike

我有一个大窗口,上面有许多 NSTextField 字段,即使任何文本字段具有焦点,我也想拦截空格键,以便随时按空格键将导致单独的操作。

子类化 NSTextField 并覆盖 -keyUp: 允许我检测空格键,但文本字段中仍插入空白。 -keyDown:根本不触发。

对于其他键(例如 Return 和箭头键),我可以使用 control:textView:doCommandBySelector: 委托(delegate)方法,但它不会通过空格键触发。

有很多关于 NSTextView 的建议,但我没有找到关于 NSTextField 的建议。

最佳答案

您是否尝试过添加事件监视器?您可以通过 NSEvent 类方法 addLocalMonitorForEventsMatchingMask(_:handler:) 创建它们
他们会优先处理您指定的事件。在您的情况下,您需要为 keyDown 事件添加一个监视器,然后在关联的 block 中决定如何处理它们。在 block 的末尾,您可以在事件到达时返回该事件,在这种情况下,它将正常运行,您可以吞掉该事件(返回 nil ),或者您可以通过创建一个新的事件对象并返回它。这是一个例子:

// You can add monitors anywhere - I've chosen the AppDelegate for
// this simple example.
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
[NSEvent addLocalMonitorForEventsMatchingMask:NSKeyDownMask
handler:^NSEvent * (NSEvent * theEvent) {

if (theEvent.keyCode == 49) {
NSLog(@"swallowing spacebar");
theEvent = nil;

}

return theEvent;
}];
}

关于objective-c - 在包含多个 NSTextField 的窗口中捕获空格键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30626655/

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