# JS-OC-WebView
`WKWebView实现js交互`<br>
## 利用WKWebView <br>
* 1、实现js交互,`js调用native`,`native调用js` <br>
* 2、实现WebView中的`图片浏览`功能。点击可以`放大`。 <br>
* 3、实现图片`长按进行保存`功能。 <br>
* 4、实现了webview中的文字`长按copy`功能。<br>
![图片示意](https://github.com/liyuunxiangGit/JS-OC-WebView/blob/master/wkWebViewjs交互.gif)
## JS-OC-WebView 代码实现详解 <br>
#### 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);
}];
}
```
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
JS-OC-WebView-master.zip (84个子文件)
JS-OC-WebView-master
HJNetwork.m 26KB
HJNetwork.h 10KB
wkWebViewjs交互.gif 3.66MB
.DS_Store 6KB
README.md 3KB
JS_OC_WebViewJavascriptBridge
.DS_Store 6KB
JS_OC_WebViewJavascriptBridge.xcodeproj
project.xcworkspace
contents.xcworkspacedata 174B
xcuserdata
harvey.xcuserdatad
UserInterfaceState.xcuserstate 26KB
liyunxiang.xcuserdatad
UserInterfaceState.xcuserstate 84KB
chenyufeng.xcuserdatad
UserInterfaceState.xcuserstate 28KB
project.pbxproj 34KB
xcuserdata
harvey.xcuserdatad
xcschemes
xcschememanagement.plist 501B
JS_OC_WebViewJavascriptBridge.xcscheme 3KB
xcdebugger
Breakpoints_v2.xcbkptlist 889B
liyunxiang.xcuserdatad
xcschemes
xcschememanagement.plist 352B
xcdebugger
Breakpoints_v2.xcbkptlist 9KB
chenyufeng.xcuserdatad
xcschemes
xcschememanagement.plist 352B
xcdebugger
Breakpoints_v2.xcbkptlist 91B
JS_OC_WebViewJavascriptBridge
Assets.xcassets
AppIcon.appiconset
Contents.json 848B
main.m 349B
MainViewController.h 235B
AppDelegate.h 292B
AppDelegate.m 3KB
Base.lproj
LaunchScreen.storyboard 2KB
index.html 5KB
MainViewController.xib 5KB
WKMianWebViewController.h 252B
WKMianWebViewController.m 7KB
MainViewController.m 642B
HMWebView
SDWebView
SDWebView.m 11KB
SDWebView.h 2KB
WebViewJavascriptBridge
WebViewJavascriptBridge.h 1KB
WebViewJavascriptBridge_JS.m 4KB
WebViewJavascriptBridgeBase.m 8KB
WebViewJavascriptBridge_JS.h 75B
WKWebViewJavascriptBridge.h 1KB
WebViewJavascriptBridgeBase.h 2KB
WebViewJavascriptBridge.m 6KB
WKWebViewJavascriptBridge.m 6KB
SDPhotoBrowserd
SDLoadingView.m 2KB
SDImageView.h 598B
SDPhotoBrowserd.podspec 6KB
SDPhotoBrowserd.m 16KB
LICENSE 1KB
SDBrowserdConfig.h 1KB
SDLoadingView.h 319B
SDPhotoBrowserd.h 750B
SDImageView.m 7KB
Info.plist 1KB
SDWebImage
SDWebImageDownloaderOperation.m 22KB
UIView+WebCache.h 3KB
UIImage+GIF.h 583B
SDWebImageDownloader.h 8KB
UIView+WebCacheOperation.m 2KB
SDImageCache.h 9KB
SDWebImageCompat.h 3KB
UIView+WebCacheOperation.h 1KB
SDWebImageManager.m 16KB
SDWebImageCompat.m 2KB
SDWebImagePrefetcher.m 5KB
UIImage+GIF.m 2KB
SDWebImagePrefetcher.h 4KB
UIView+WebCache.m 7KB
NSImage+WebCache.m 621B
UIButton+WebCache.h 11KB
SDImageCacheConfig.m 566B
UIImageView+WebCache.h 8KB
SDWebImageDecoder.m 12KB
UIImage+MultiFormat.h 505B
UIImage+MultiFormat.m 5KB
SDWebImageManager.h 10KB
SDWebImageDownloader.m 14KB
SDWebImageDecoder.h 534B
UIButton+WebCache.m 7KB
UIImageView+WebCache.m 5KB
SDImageCache.m 22KB
NSData+ImageContentType.h 756B
NSData+ImageContentType.m 1KB
UIImageView+HighlightedWebCache.m 2KB
SDWebImageOperation.h 329B
UIImageView+HighlightedWebCache.h 4KB
SDImageCacheConfig.h 994B
NSImage+WebCache.h 412B
SDWebImageDownloaderOperation.h 5KB
共 84 条
- 1
资源评论
桂花街妃
- 粉丝: 0
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功