zoukankan      html  css  js  c++  java
  • 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];
           }
       }];
    
  • 相关阅读:
    vue项目搭建
    js监听input输入框值的实时变化实例
    nodejs-Child Process模块
    nodejs-Express框架
    前端的存储技术cookie、sessionStorage、localStorage
    node.js之path
    css两列自适应布局的多种实现方式及原理。
    React jQuery公用组件开发模式及实现
    js创建对象的几种方式
    IE9 不F12打开控制台,代码不执行。打开后正常
  • 原文地址:https://www.cnblogs.com/plys/p/15433511.html
Copyright © 2011-2022 走看看