WKWebView 不能通过键盘交互

Posted

技术标签:

【中文标题】WKWebView 不能通过键盘交互【英文标题】:WKWebView not interactive by keyboard 【发布时间】:2018-11-28 12:10:19 【问题描述】:

总的来说,我是 swift 和苹果开发的新手(来自 JS 世界)。我正在尝试通过包装 WKWebView 来做一个简单的桌面应用程序。 ViewController 创建 webView 的部分工作正常。至少看起来是这样:它加载了一个网页:)

但是当我点击任何输入字段时,我无法写任何东西。字段中甚至看不到光标。

基本上只有通过鼠标/触摸板点击才有效。 但是当鼠标悬停在元素(例如按钮和文本字段)上时,鼠标光标不会改变。在我看来,网页上方有某种蒙版/图层。点击会传播到页面本身,但不会传播到悬停和击键

应用程序中是否有任何特殊的项目设置/权限启用键盘? 如何使页面输入可编辑?

更多细节:

单击文本字段有效(它会根据焦点选择器更改边框颜色) 点击 webview 中的 <a> 链接有效 鼠标右键似乎可以工作(它显示复制/粘贴选项等) 通过鼠标右键单击粘贴到现场作品中

代码:

import Cocoa
import SafariServices.SFSafariApplication
import WebKit

class ViewController: NSViewController, WKNavigationDelegate 

     @IBOutlet var ww: WKWebView!

     override func viewDidLoad() 
         super.viewDidLoad()

         ww.navigationDelegate = self
         ww.load(URLRequest(url: URL(string: "https://www.google.com")!))
         view = ww
    

我的故事板:

Ww 是 WebKit 视图 Ww 覆盖所有View 区域(鼠标拖放)

感谢您的任何回答或提示! ????

【问题讨论】:

【参考方案1】:

您的原始代码对我有用。您需要禁用沙盒功能:

禁用此功能后,我可以加载 webview 并与之交互。

【讨论】:

感谢您的回复。不幸的是,它对我不起作用:(你的故事板是什么样的? 对不起,我错过了 NSViewController -> UIViewController 交换。请问有什么区别?我的 xcode 也报告:Type 'ViewController' does not conform to protocol 'NSObjectProtocol' 当我尝试更改时 好的,我发现 UIViewController 是用于 ios 应用程序的。我在我的问题中说我正在寻找桌面应用程序解决方案,我相信这是关于 NSViewController 的。还是谢谢

以上是关于WKWebView 不能通过键盘交互的主要内容,如果未能解决你的问题,请参考以下文章

WKWebView的evaluateJavascript方法的completionHandler运行在啥线程上?

带有 WKWebView 单元格的滚动 UICollectionView 的 UITableView

在 iOS 9 中遇到 WKWebview 和 UIWebView 问题

ios键盘不占webview的高度

使用WKWebView修改键盘工具栏/附件视图

swift 笔记:iOS与JavaScript的交互(三):WKWebView 3. WKUiDelegate - 4 - 2通过WKConfig引入脚本: