我正在创建一个具有信息亭网络浏览器作为其功能之一的应用程序。
Web浏览器位于NSWindowController中,并且发生了一件奇怪的事情:加载NSWindowController时,我将WebView网址设置为默认网址,然后开始加载页面。 一切正常,等等,但是在单击窗口中的任何位置之前,我无法与WebView交互(即,单击加载页面中的链接)。之后,一切正常。看起来该窗口缺少“焦点”,单击该窗口后它获得焦点,并且我将鼠标悬停在链接等上时会看到光标发生变化...
当我不使用[[self.window contentView] enterFullScreenMode:[NSScreen mainScreen] withOptions:nil];
窗口中也有几个按钮,但是它们只在第一次单击时起作用而没有聚焦。
无论如何,以下是完成大部分工作的代码:
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]]];
答案 0 :(得分:1)
在您单击它之前,我假设您的webView不是第一响应者。 您可以使用
进行更改[[self window] makeFirstResponder:webView];
[self.window makeKeyAndOrderFront:self];
或[NSApp activateIgnoringOtherApps:YES];
也可以根据情况进行更改。如果这样做无济于事,则您可能需要在最初使用呼叫时使其具有延迟依赖性。
[self performSelector:@selector(myDelayedActivateFunction) withObject:nil afterDelay:0.0];