gpt4 book ai didi

cocoa - 将热键添加到 NSTextField

转载 作者:行者123 更新时间:2023-12-03 17:27:57 29 4
gpt4 key购买 nike

我的 NSTextField 子类遇到一些问题。这是一个用于输入一些消息的文本字段。当我的子文本字段是第一响应者并且用户按下热键 Cmd + Enter 时,我的应用程序必须发送此消息。我无法使用 Carbon 方法 RegisterEventHotKey() 因为许多应用程序使用此热键执行相同的操作,但我的应用程序拦截了它。我能做什么?

最佳答案

在委托(delegate)文本字段中,您可以按照所有“标准”命令发送到控件。然后,一旦遇到命令 noop:,就测试当前的组合键。如果是 Command-Enter,则执行您的操作。像这样的东西应该有效:

@interface VCEAppDelegate : NSObject <NSApplicationDelegate, NSTextFieldDelegate>
@property (nonatomic, weak) IBOutlet NSTextField *textField;
@end

// .m
@implementation VCEAppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
self.textField.delegate = self;
}

- (BOOL)isCommandEnterEvent:(NSEvent *)e {
NSUInteger flags = (e.modifierFlags & NSDeviceIndependentModifierFlagsMask);
BOOL isCommand = (flags & NSCommandKeyMask) == NSCommandKeyMask;
BOOL isEnter = (e.keyCode == 0x24); // VK_RETURN
return (isCommand && isEnter);
}

- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView
doCommandBySelector:(SEL)commandSelector {
if ((commandSelector == @selector(noop:)) &&
[self isCommandEnterEvent:[NSApp currentEvent]]) {
[self handleCommandEnter];
return YES;
}
return NO;
}

- (void)handleCommandEnter {
NSLog(@"Do something on Command-Enter");
}

@end

关于cocoa - 将热键添加到 NSTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11682939/

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