登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

WKWebView实现js交互 JS-OC-WebView优化

[复制链接]
来自: 15754713678 分类: iOS精品源码 上传时间: 2017-12-25 14:53:48
Tag:

项目介绍:

JS-OC-WebView

WKWebView实现js交互

利用WKWebView  
 

  • 1、实现js交互,js调用native,native调用js  
     

  • 2、实现WebView中的图片浏览功能。点击可以放大。    
           

  • 3、实现图片长按进行保存功能。                      
                 

  • 4、实现了webview中的文字长按copy功能。
     

JS-OC-WebView 代码实现详解  

1、首先创建控制器WKMianWebViewController

2、然后控制器中继承如下类:

#import <WebKit/WebKit.h>
#import <AVFoundation/AVFoundation.h>
#import "WKWebViewJavascriptBridge.h"
#import "SDWebView.h"

3、准备工作:

  • 1、设置代理

WKNavigationDelegate,WKUIDelegate
  • 2、在.h文件中

@property (strong, nonatomic)   SDWebView  *webView;
@property WKWebViewJavascriptBridge *webViewBridge;

4、代码阶段:

  • 1、viewDidLoad中初始化webView,实现[self initWKWebView]方法。方法如下:

- (void)initWKWebView
{
    WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
    configuration.userContentController = [WKUserContentController new];
    
    WKPreferences *preferences = [WKPreferences new];
    preferences.javaScriptCanOpenWindowsAutomatically = YES;
    preferences.minimumFontSize = 30.0;
    configuration.preferences = preferences;
    
    SDWebView *webView = [[SDWebView alloc] initWithFrame:self.view.frame configuration:configuration];
    self.webView = webView;
    //如果是本地html,用下面方法:
    NSString *urlStr = [[NSBundle mainBundle] pathForResource:@"index.html" ofType:nil];
    NSString *localHtml = [NSString stringWithContentsOfFile:urlStr encoding:NSUTF8StringEncoding error:nil];
    NSURL *fileURL = [NSURL fileURLWithPath:urlStr];
    [webView loadHTMLString:localHtml baseURL:fileURL];
    //如果是网址,用下面的方法:
    //    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://tbk.xxtapp.cn/test/unitActivity/hybrid.html?s=2"]]];
    webView.UIDelegate = self;
    [self.view addSubview:webView];
}
  • 2、然后初始化webViewBridge并注册代理

 _webViewBridge = [WKWebViewJavascriptBridge bridgeForWebView:self.webView];
 [_webViewBridge setWebViewDelegate:self.webView];
  • 3、最后注册js交互的方法,如demo所示:

[self registerNativeFunctions];
  • registerNativeFunctions方法的实现

#pragma mark - private method
- (void)registerNativeFunctions
{
    
    [self registTestOneFunction];
}
-(void)registTestOneFunction
{
    
    [_webViewBridge registerHandler:@"testOCFunction" handler:^(id data, WVJBResponseCallback responseCallback) {
        
        // data 的类型与 JS中传的参数有关
        NSDictionary *tempDic =  [self JSONStringToDictionaryWithData:data];;
        // 在这里执行分享的操作
        NSString *title = [tempDic objectForKey:@"title"];
        NSString *content = [tempDic objectForKey:@"content"];
        NSString *url = [tempDic objectForKey:@"url"];
        
        // 将分享的结果返回到JS中
        NSString *result = [NSString stringWithFormat:@"js调用native成功成功:\ntitle=%@\n,content=%@\n,url=%@",title,content,url];
        responseCallback(result);
    }];
}

代码移步GitHub,给个star鼓励,相互进步,think you
点击进入GitHub
点击进入我的CSDN博客

相关源码推荐:

我来说两句
*滑动验证:
所有评论(49)
逆鳞九霄 2017-12-25 15:14:20
很给力,Code4App有你更精彩!
回复
phoiu 2017-12-25 15:15:08
好好 学习了 确实不错
回复
BlueManlove 2017-12-25 15:15:13
相当不错,感谢无私分享精神!
回复
AlonMessi 2017-12-25 15:15:18
code4app确实是个好地方,必须支持~
回复
kengsir 2017-12-25 15:15:24
code4app好的代码demo真的很多,谢谢啦~
回复
littleRed 2017-12-25 15:15:31
不错不错,楼主辛苦了。。。
回复
hellokenken 2017-12-25 15:16:08
学习...学习...
回复
code4app热心网友 2017-12-25 15:49:28
感谢分享,Code4App有你更精彩:)
回复
15754713678 2017-12-25 16:23:28
正需要啊,感谢楼主无私分享!
回复
12345下一页
提取码:  下载次数:196 状态:已购或VIP 售价:0(原价:15)金钱 下载权限:初级码农 
1922 2 196
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表