如何限制WKWebview文件上传功能并定位对应弹出框的负责组件
WKWebView文件上传弹窗拦截方案
弹窗所属组件说明
你提到的文件选择弹窗:
是WKWebView检测到网页内<input type="file">标签被点击时,由WKUIDelegate的默认实现触发系统原生控件生成的,根据上传类型不同对应的实际组件为:
- 选择照片/视频场景:UIImagePickerController
- 选择本地文件场景:UIDocumentPickerViewController
限制文件上传功能的实现方式
只需要重写WKUIDelegate的文件上传处理代理方法,直接回调nil即可拦截弹窗,阻断上传流程:
Objective-C 代码示例
- (void)webView:(WKWebView *)webView runOpenPanelWithParameters:(WKOpenPanelParameters *)parameters initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(NSArray<NSURL *> * _Nullable URLs))completionHandler { // 必须调用completionHandler避免崩溃,传nil即可终止上传逻辑不弹出弹窗 completionHandler(nil); }
Swift 代码示例
func webView(_ webView: WKWebView, runOpenPanelWith parameters: WKOpenPanelParameters, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping ([URL]?) -> Void) { completionHandler(nil) }
内容的提问来源于stack exchange,提问作者Shwetha M
相关产品推荐
相关产品推荐

