UIWebView中Html中用JS调用OC方法及OC执行JS代码

Posted 刚刚888

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIWebView中Html中用JS调用OC方法及OC执行JS代码相关的知识,希望对你有一定的参考价值。

html代码:
<html>
    <head>
        <title>HTML中用JS调用OC方法</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        [removed]
            function openAlbum()
            {
                // 打开相册(openMyAlbum为OC中的方法)
                [removed].href = ios://openMyAlbum;
            }
            function openCamera()
            {
                // 打开相机(openMyCamera为OC中的方法)
                [removed].href = ios://openMyCamera;
            }
        [removed]
    </head>
    <body>
        <br/>
        <br/>
        <br/>
        <input type="button" value="打开相机"> <br><br/>
        <input type="button" value="打开相册"> 
    </body>
</html>


OC代码:
#import "ViewController.h"

@interface ViewController ()<UIWebViewDelegate>
@property (weak, nonatomic) IBOutlet UIWebView *webview;
- (IBAction)getTitle;

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSURL *url = [[NSBundle mainBundle] URLForResource:@"test.html" withExtension:nil];
    [self.webview loadRequest:[NSURLRequest requestWithURL:url]];
    self.webview.delegate = self;
    self.webview.dataDetectorTypes = UIDataDetectorTypeAll;
}

#pragma mark UIWebViewDelegate方法
/**
 *开始加重请求拦截
 */
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{

    NSString *urlstr = request.URL.absoluteString;
    NSRange range = [urlstr rangeOfString:@"ios://"];
    if (range.length!=0) {
        NSString *method = [urlstr substringFromIndex:(range.location+range.length)];
        SEL selctor = NSSelectorFromString(method);
        [self performSelector:selctor withObject:nil];
    }
    return YES;
}
/**
 *  OC执行JS代码
 */
- (IBAction)getTitle {
    
    [self.webview stringByEvaluatingjavascriptFromString:@"alert(document.title);"];
}

-(void)openMyAlbum
{
    UIImagePickerController *vc = [[UIImagePickerController alloc]init];
    vc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    [self presentViewController:vc animated:YES completion:nil];
}

-(void)openMyCamera
{
    UIImagePickerController *vc = [[UIImagePickerController alloc]init];
    vc.sourceType = UIImagePickerControllerSourceTypeCamera;
    [self presentViewController:vc animated:YES completion:nil];
}

@end

 

以上是关于UIWebView中Html中用JS调用OC方法及OC执行JS代码的主要内容,如果未能解决你的问题,请参考以下文章

iOS下JS与OC互相调用--WKWebView 拦截URL

如何在IOS平台上使用js直接调用OC方法

iOS JS 和 OC交互 / JS 和 native 相互调用

UIWebView中JS与OC交互 WebViewJavascriptBridge的使用

ios怎么实现点击webview按钮调用oc代码

OC与JS的交互(iOS与H5混编)