MacOS 自定义NSWindow,无法接收键盘输入

2021-04-22  本文已影响0人  devileatapple

MacOS 自定义NSWindow,无法接收键盘输入

开发的时候遇见了这个神奇的问题。自定义了一个Window,内嵌WKWebview,但是webview里只能接收到鼠标点击事件,接收不到键盘输入的事件。

其实导致这个原因就是自定义window展示之后keywindow并没有切换成这个子window。如果你初始化的时候,styleMask设置没有设置NSWindowStyleMaskTitled,那就会导致becomeKeyWindow方法调用失效。

解决方案有两个,如果要保留系统自带的左上角的三个按钮(关闭,最大,最小按钮),初始化的时候带上NSWindowStyleMaskTitled就行了。即:

    self = [super initWithContentRect:frame 

                                        styleMask: NSWindowStyleMaskTitled | NSWindowStyleMaskMiniaturizable | NSWindowStyleMaskClosable | NSWindowStyleMaskUtilityWindow 

                                            backing:NSBackingStoreRetained

                                                 defer:NO];

如果不想要那三个按钮,NSWindowStyleMaskTitled舍弃,在自定义的window类中,添加下面这个方法,在展示这个window的时候再调用[self becomeKeyWindow]的方法。

- (BOOL)canBecomeKeyWindow {

    return YES;

}

上一篇 下一篇

猜你喜欢

热点阅读