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];
           }
       }];
    
  • 相关阅读:
    python模块—socket
    mac os系统的快捷键
    教你如何将UIImageView视图中的图片变成圆角
    关于ASP.NET MVC
    iOS 日期格式的转换
    将App通过XCode上传到AppStore 出现这个错误“An error occurred uploading to the iTunes Store”的解决方法
    关于MAC OS下面两个软件的功能改进——Dictionary和Fit 输入法
    分享一下上个星期的香港行程
    【博客园IT新闻】博客园IT新闻 iPhone 客户端发布
    解决Entity Framework Code First 的问题——Model compatibility cannot be checked because the database does not contain model metadata
  • 原文地址:https://www.cnblogs.com/plys/p/15433511.html
Copyright © 2011-2022 走看看