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

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;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容