在我的项目中,我有一个网络视图。在 Web 视图中加载的页面包含一个文件(图像(上传器。单击文件上传器上的选择图像按钮后,手机的图像选择器将打开。我无权更改网页,因为它是客户组织的网页。有没有办法检测应用程序中UIImagePicker的打开。
<input id=“fileUpload" name=“fileUpload" type="file" data-bind="value: UploadedFile">
这是用于文件选取器的 html。单击文件选取器时,将弹出 UIImage 选取器视图。我想检测它。
在网页中,对于"选择图像"按钮,编写一个 Java 脚本函数。 iOS 支持自定义 URL 方案
,语法如下scheme://host/path?query
.html中的 Java 脚本函数示例:
<p class="btn-upload" onclick="onUploadButtonClick()" >
<span> Upload File </span>
</p>
<script>
function onUploadButtonClick() {
window.location = "ios://button-upload”;
}
</script>
在类 .m 文件中,在 Webview 委托方法中webView:shouldStartLoadWithRequest:request:navigationType
比较主机。 如果匹配,则调用目标 C 函数以在应用中打开 UIImagePicker。
#pragma mark - UIWebView Delegates
- (void) webViewDidFinishLoad:(UIWebView *)webView {
//Do after web view load.
}
- (BOOL)webView:(UIWebView *)webView
shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType;
{
// get the action from the path
NSString *actionType = request.URL.host;
if ([actionType isEqualToString:@“button-upload”]) {
// do something in response to your javascript action
// if you used an action parameters dict, deserialize and inspect it here
[self openImagePicker]; //Cal your method to open UIImagePicker
}
// make sure to return NO so that your webview doesn't try to load your made-up URL
return NO;
}
奖励:确保您已在info.plist
中添加了应用程序传输安全密钥。