gpt4 book ai didi

objective-c - NSWindow 不接收键盘事件

转载 作者:搜寻专家 更新时间:2023-10-30 19:48:06 24 4
gpt4 key购买 nike

我以编程方式创建 NSWindow,但我无法接收任何键盘消息。而不是我在 Xcode 编辑器中输入,但此时我的窗口处于焦点状态。我如何拦截此事件?

这是我的代码:

//// delegate
@interface MyDelegate : NSObject
@end
@implementation MyDelegate
@end

//// view
@interface MyView : NSView
@end

@implementation MyView

- (BOOL)isOpaque { return YES;}
- (BOOL)canBecomeKeyView { return YES;}
- (BOOL)acceptsFirstResponder { return YES;}

- (void)keyDown:(NSEvent *)event
{
printf("PRESS\n"); // it's ignoring
}

@end

//// main
int main(int argc, const char **argv){
[NSApplication sharedApplication];

NSWindow *window = [[NSWindow alloc]
initWithContentRect:NSMakeRect( 0, 0, 100, 100 )
styleMask:NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask
backing:NSBackingStoreBuffered
defer:NO];
[window setContentView: [[MyView alloc] init]];
[window setDelegate: [[MyDelegate alloc] init] ];
[window setAcceptsMouseMovedEvents:YES];
[window setLevel: NSFloatingWindowLevel];
[window makeKeyAndOrderFront: nil];

[NSApp run];
return 0;
}

最佳答案

您需要将应用程序设为前台应用程序。这是主窗口接收按键事件所必需的。

ProcessSerialNumber psn = {0, kCurrentProcess};
OSStatus status =
TransformProcessType(&psn, kProcessTransformToForegroundApplication);

关于objective-c - NSWindow 不接收键盘事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12145301/

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