全屏(信息亭)带有 WebView 的 NSWindowController 需要先点击才能点击任何链接

Fullscreen (kiosk) NSWindowController with WebView need click first before been able to click on any links

我正在创建一个应用程序,其功能之一是自助服务终端 Web 浏览器。

Web 浏览器位于 NSWindowController 中,发生了一件奇怪的事情:加载 NSWindowController 时,我将 WebView url 设置为默认值并开始加载页面。 一切都加载正常等,但在我单击 window 上的任何位置之前,我无法与 WebView 交互(即单击加载页面中的 link)。之后一切正常。看起来 window 丢失了 'focus',单击 window 后它获得了焦点,我看到光标在悬停在 links 等上时发生变化...

当我不使用 [[self.window contentView] enterFullScreenMode:[NSScreen mainScreen] withOptions:nil];

时,这不是问题

window 中也有几个按钮,但它们只在第一次点击时起作用,没有聚焦。

无论如何,这是完成大部分工作的代码:

NSApplicationPresentationOptions options =
NSApplicationPresentationHideMenuBar|NSApplicationPresentationHideDock|
NSApplicationPresentationDisableHideApplication|
NSApplicationPresentationDisableProcessSwitching|
NSApplicationPresentationDisableAppleMenu| NSApplicationPresentationDisableForceQuit;

[NSApp setPresentationOptions:options];
[[self.window contentView] enterFullScreenMode:[NSScreen mainScreen] withOptions:nil];


[self.webView setFrameLoadDelegate:self];
[self.webView setPolicyDelegate:self];

NSString *url = [[NSString alloc] initWithString:@"https://www.google.com"];
[[self.webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];

我假设你的 webView 在你点击它之前不是第一响应者。 您可以使用

更改此设置
[[self window] makeFirstResponder:webView];

还有[self.window makeKeyAndOrderFront:self];[NSApp activateIgnoringOtherApps:YES];可以根据情况做出改变。如果这没有帮助,您可能需要在最初使用时根据延迟进行调用。

[self performSelector:@selector(myDelayedActivateFunction) withObject:nil afterDelay:0.0];