• WKWebView


    1.WKWebView

    wkwebview是苹果在2014年的新一代webView组件,用于替代原来的UIWebView,目前APP上架使用UIWebView可能会被拒审,所以WKWebView对于ios开发者是必要的技能。

    2.WKWebView交互

    1.WKViewConfiguratioin

    初始化webView的配置

    点击查看代码
        WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
        config.preferences.minimumFontSize = 18;
        config.preferences.javaScriptCanOpenWindowsAutomatically = YES;
    	//添加脚本函数
        [config.userContentController addScriptMessageHandler:self name:@"jsCallOCNoParameter"];
        [config.userContentController addScriptMessageHandler:self name:@"jsCallOCTwoParameter"];
        [config.userContentController addScriptMessageHandler:self name:@"jsCallOCOneParameter"];
        [config.userContentController addScriptMessageHandler:self name:@"share"];
        [config.userContentController addScriptMessageHandler:self name:@"shareNew"];
        [config.userContentController addScriptMessageHandler:self name:@"finishLoad"];
        [config.userContentController addScriptMessageHandler:self name:@"finishLoadSendTwoValue"];
    

    2.加载h5Url

    点击查看代码
        NSString *path = [[NSBundle mainBundle] pathForResource:@"javaScript" ofType:@"html"];
        NSString *htmlString = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
        [self.webView loadHTMLString:htmlString baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];
    

    3.JS调用OC

    点击查看代码
    - (void)userContentController:(nonnull WKUserContentController *)userContentController didReceiveScriptMessage:(nonnull WKScriptMessage *)message {
    	//判断js的函数名
    	if ([message.name isEqual:@"jsCallOCNoParameter"]) {
            NSLog(@"click jsCallOCNoParameter");
        } else if ([message.name isEqual:@"jsCallOCOneParameter"]) {
            NSLog(@"click jsCallOCOneParameter");
        } else if ([message.name isEqual:@"jsCallOCTwoParameter"]) {
            NSLog(@"click jsCallOCTwoParameter");
        } else if ([message.name isEqual:@"shareNew"]) {
            NSLog(@"click shareNew");
        }
    	}
    

    4.OC调用JS

    点击查看代码
    //把两个参数合成一个参数传递进去
       NSString *value_1 = @"方法1 - 参数1";
       NSString *value_2 = @"方法1 - 参数2";
       NSString *value = [NSString stringWithFormat:@"%@,%@",value_1,value_2];
       NSString *functionOne = [NSString stringWithFormat:@"finishLoad('%@')",value];
       //为了验证是否能够成功t调用OC -> JS 方法,我会传一个参数进去,然后JS -> OC的方法吧参数传出来。验证是否成功调用。
       [self.webView evaluateJavaScript:functionOne completionHandler:^(id _Nullable title, NSError * _Nullable error) {
           //这里是OC -> JS 方法之后的回调。可以在里面执行调用方法之后的操作,一般是刷新网页,但是要注意的是。要一个标志摔性能页面的时候,不然的话进入死循环。
           if (self.reload == NO) {
               self.reload = YES;
               [self.webView reload];
           }
       }];
    	NSString *userID = @"方法2 - 参数1";
       NSString *accountID = @"方法2 - 参数2";
       NSString *functionTwo = [NSString stringWithFormat:@"finishLoadSendTwoValue('%@','%@')",userID,accountID];
       //为了验证是否能够成功t调用OC -> JS 方法,我会传一个参数进去,然后JS -> OC的方法吧参数传出来。验证是否成功调用。
       [self.webView evaluateJavaScript:functionTwo completionHandler:^(id _Nullable title, NSError * _Nullable error) {
           //这里是OC -> JS 方法之后的回调。可以在里面执行调用方法之后的操作,一般是刷新网页,但是要注意的是。要一个标志摔性能页面的时候,不然的话进入死循环。
           if (self.reload == NO) {
               self.reload = YES;
               [self.webView reload];
           }
       }];
    
  • 相关阅读:
    浅谈3次登录错误
    JDK一键安装,配置环境
    火炬之光2_辅助工具 内存读写相关
    学习资料
    如何在google colab加载kaggle数据
    Trie树
    日常
    Kmeans
    【leet-code】135. 加油站
    Mac CLion下OpenGL环境配置
  • 原文地址:https://www.cnblogs.com/plys/p/15433511.html
Copyright © 2020-2023  润新知