iOS 使用UIWebView加载h5页面,h5页面有一个input标签如:<input id="fileId" type="file" accept="image/png,image/jpeg" multiple>用于上链姿雀传文件,点击会调用iOS的相册或相机、浏览等,如图1,简单说一下multiple属性限制单选和多重选择
input标签中无论怎么写multiple属性,UIWebView加载的文件上传都是多重选择。经发现UIWebView会自动为棚早HTML <input type="file">标签添加多个属性。这种行为与iOS版本不同,差不多算是UIWebView的bug.
解决就非常简单了,使用WKWebView替换UIWebView,WKWebView优于UIWebView,正确处理<input type="file">。
一.准备HTML文件及其资源文件使用UIWebView加载本地的HTML4文件 index.html,在index.html中引用了升物顷本地的图片吵陆、CSS文件、JS文件以及外部的图片。
二.加载本地HTML文件
将html5文件及相关资源添加到项目中,调用需要上传的文件蚂粗夹。
三.选择调用的文件夹上传。
苹果开始全面禁用UIWebView了,导衡誉模致APP提交到App Store Connect上之后咐缓,处理了一段时间直接提示“构建状态已更改为二进制文件无效”,查看苹果发的邮件后,提示是
ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted
项目中如果使用了UIWebView,将其用WKWebview代替。
全局搜索UIWebView,我项目里找到Blockskit跟AFNetworking里面包含了UIWebView。
1.Blockskit
pod 'BlocksKit', git: ' https://github.com/LDXu/BlocksKit.git ', branch: 'v2.5'
2.AFNetworking
pod 'AFNetworking', '~>3.0', :subspecs =>['Reachability', 'Serialization', 'Security', 'NSURLSession’]
或者
pod 'AFNetworking', '~>4.0.1’
不过我项目中使用的是YTKNetwork,自动导入的AFNetworking,所以要升级YTKNetwork版本,移除UIWebView是2.1.3及之后的版本
pod 'YTKNetwork', '~>2.1.3’
使用新版本的AF
#import <AFNetworking>
改为
#import <AFNetworking/AFHTTPSessionManager.h>
以及还有3.IQKeyboardManager 6.5.0
pod 'IQKeyboardManager', '~>6.5.0’
4.友盟分享 6.9.8
5.WebViewJavascriptBridge
pod 'WebViewJavascriptBridge', :git =>' https://github.com/stury/WebViewJavascriptBridge.git ', :branch =>‘master’
全局搜索后已经找不到UIWebView,重新虚团上传后依然不行
从终端cd到项目中
grep -r UIWebView .
发现了face++和网易易盾以及project.xcworkspace依然包含了UIWebView
如
Binary file ./project.xcworkspace/xcuserdata/total.xcuserdatad/UserInterfaceState.xcuserstate matches
更新相关库。删除project.xcworkspace重新pod install
参考
remove uiwebview
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)