UIWebView调用<input>访问相册自动多选,需改为单选技术求助
问题:UIWebView中
<input type="file">默认多选,需实现单选功能 嘿,我遇到个头疼的问题——我正在开发一个Web封装应用,里面用到了UIWebView。之前用<input>标签调用文件选择的时候明明正常,可我根本没加multiple属性,现在它却自动允许多选图片了,我得把它改成单选,求各位大佬帮忙看看!
我的iOS代码:
[webPage loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60.0]]; [webPage setOpaque:NO]; webPage.backgroundColor = [UIColor clearColor]; webPage.scrollView.bounces = NO; webPage.delegate = self; [self.view addSubview:webPage];
我的HTML代码:
<input type="file" />
可能的解决办法:
- 明确指定单选属性:虽然HTML标准里不写
multiple默认是单选,但UIWebView的内核可能有特殊处理,手动给input加上multiple="false",同时可以限定只选图片避免干扰,代码如下:<input type="file" accept="image/*" multiple="false" /> - 通过JS注入强制修改属性:如果没法直接修改前端HTML,可在UIWebView的代理方法里注入JS代码,批量修改所有文件选择框的属性:
- (void)webViewDidFinishLoad:(UIWebView *)webView { NSString *fixSingleSelectJS = @"var fileInputs = document.querySelectorAll('input[type=\"file\"]'); for (var i = 0; i < fileInputs.length; i++) { fileInputs[i].multiple = false; fileInputs[i].setAttribute('multiple', 'false'); }"; [webView stringByEvaluatingJavaScriptFromString:fixSingleSelectJS]; } - 考虑迁移到WKWebView:UIWebView已经被苹果废弃,它对HTML标准的支持存在不少兼容性问题,WKWebView的行为更贴合标准,迁移后大概率能解决这类奇怪的默认行为问题。
内容的提问来源于stack exchange,提问作者Vix Hunk
相关产品推荐
相关产品推荐

