美文网首页
MacOS 自定义NSWindow,无法接收键盘输入

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

作者: devileatapple | 来源:发表于2021-04-22 11:07 被阅读0次

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;

}

相关文章

网友评论

      本文标题:MacOS 自定义NSWindow,无法接收键盘输入

      本文链接:https://www.haomeiwen.com/subject/hzuxrltx.html