1

在 WKWebView 中调用window.promptJavaScript 会产生断言错误:

-[UIAlertController addTextFieldWithConfigurationHandler:] 中的断言失败

断言错误来自这个 WKUIDelegate 函数:

func webView(_ webView: WKWebView, runJavaScriptTextInputPanelWithPrompt prompt: String, defaultText: String?, initiatedByFrame frame: WKFrameInfo,
             completionHandler: @escaping (String?) -> Void) {

    let alertController = UIAlertController(title: nil, message: prompt, preferredStyle: .actionSheet)

    alertController.addTextField { (textField) in
        textField.text = defaultText
    }

    alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in
        if let text = alertController.textFields?.first?.text {
            completionHandler(text)
        } else {
            completionHandler(defaultText)
        }
    }))

    alertController.addAction(UIAlertAction(title: "Cancel", style: .default, handler: { (action) in
        completionHandler(nil)
    }))

    present(alertController, animated: true, completion: nil)
}

在添加文本字段或初始化程序时,类文档没有显示添加配置处理程序的方法。那你应该怎么处理呢?

4

2 回答 2

1

尝试从样式更改actionSheetalert. 对于将从 更改为 的 Objective-CUIAlertControllerStyleActionSheet用户UIAlertControllerStyleAlert

于 2017-05-08T18:10:12.370 回答
0

Present 应该从 viewController 调用。怀疑你可能是这种情况。

于 2018-02-14T21:35:33.740 回答