如何让输入文件在 WKWebView 中工作?

How can you get input file to work in a WKWebView?

当您在 OSX 应用程序中使用 WKWebView 时,当您按下 <input type="file"> 按钮时,您无法 select 从硬盘中获取文件。您将如何启用此功能?

我听说你通常使用:

func webView(sender: WebView!, runOpenPanelForFileButtonWithResultListener resultListener: WebOpenPanelResultListener!)

它是 WebUIDelegate 的一部分,但即使您设置 self.webView.UIDelegate = self 它也不会被触发。

这是 WKWebView 中的一个已知错误。

https://bugs.webkit.org/show_bug.cgi?id=137759

这是 WKWebview "File Upload" 问题的 100% 工作解决方案。

您只需要实现 UIDelegate:

- (void)webView:(WKWebView *)webView runOpenPanelWithParameters:(WKOpenPanelParameters *)parameters initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(NSArray<NSURL *> *URLs))completionHandler;

关注此 link 以获取有关此委托的更多说明: RunOpenPanel Delegate