检测UIImagePicker是否从Web视图中打开

时间:2017-07-01 03:38:16

标签: ios xamarin.ios uiwebview uiimagepickercontroller

在我的项目中,我有一个Web视图。 Web视图中加载的页面包含文件(Image)上传程序。单击文件上传器上的选择图像按钮,然后打开手机的图像选择器。我无权在网页上进行更改,因为它是客户组织的网页。有没有办法在应用程序中检测UIImagePicker的打开。

<input id=“fileUpload" name=“fileUpload" type="file" data-bind="value: UploadedFile">

这是用于文件选择器的html。单击文件选择器时,弹出UIImage Picker View。我想检测它。

1 个答案:

答案 0 :(得分:1)

在网页中,对于“选择图像”按钮,编写Java脚本功能。 iOS支持使用以下语法提供的自定义URL方案

  

方案://主机/路径查询

.html中的示例Java脚本函数:

x-www-form-urlencoded

在类.m文件中,Webview委托方法 <p class="btn-upload" onclick="onUploadButtonClick()" > <span> Upload File </span> </p> <script> function onUploadButtonClick() { window.location = "ios://button-upload”; } </script> 内部比较主机。如果匹配则调用你的目标c函数在app中打开UIImagePicker。

webView:shouldStartLoadWithRequest:request:navigationType

奖励:确保您已在#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; } 中添加了App Transport Security Key