Cocoa 应用程序中的 WKWebView 单击时无法获取光标
WKWebView in Cocoa app can't get the cursor on click
我创建了一个简单的测试应用程序,其中一个字段是 NSTextField
,另一个字段是 <textarea>
而不是 WKWebView
。我可以单击进入 Web 视图一次,但如果我返回 NSTextField
,我将无法再次将光标返回到 Web 视图。
这里有一个演示:
如您所见,Web 视图在某种程度上仍然具有交互性,只是不能再次成为(我假设)第一响应者。
WKWebView
和响应链有什么奇怪的地方吗?我怎样才能让 WebWebView
表现得像一个正常的 NSTextField
?
Here is a sample project 内置于 Xcode 11.5 中,如果您想尝试一下。
如何解决这个问题?
问题似乎与 textarea 有关,使用 content editable <body contenteditable="true"></body>
似乎有效。
使用 textarea 的解决方法是像这样子类化 WKWebView:
- (void)mouseDown:(NSEvent *)event
{
[super mouseDown:event];
[[self window] makeFirstResponder:self];
}
我创建了一个简单的测试应用程序,其中一个字段是 NSTextField
,另一个字段是 <textarea>
而不是 WKWebView
。我可以单击进入 Web 视图一次,但如果我返回 NSTextField
,我将无法再次将光标返回到 Web 视图。
这里有一个演示:
如您所见,Web 视图在某种程度上仍然具有交互性,只是不能再次成为(我假设)第一响应者。
WKWebView
和响应链有什么奇怪的地方吗?我怎样才能让 WebWebView
表现得像一个正常的 NSTextField
?
Here is a sample project 内置于 Xcode 11.5 中,如果您想尝试一下。
如何解决这个问题?
问题似乎与 textarea 有关,使用 content editable <body contenteditable="true"></body>
似乎有效。
使用 textarea 的解决方法是像这样子类化 WKWebView:
- (void)mouseDown:(NSEvent *)event
{
[super mouseDown:event];
[[self window] makeFirstResponder:self];
}