一行代码搞定 JS 调用 OC

2016-09-07 14:39:47 +08:00
 newkengsir

CHWebView

点击下载 github 地址

CHWebView 是一个基于 OC 代码实现的 WebView 轻量级组件,适配 UIWebView 和 WKWebView 的 API 封装成统一的类去使用,并且在加载网页的时候提供进度条,同时简化 JS 与 OC 调用的方式。

demo 下载

功能

安装

目前支持 POD 安装,或者可以实现下载 project 将 CHWebView 文件夹拖入你的工程中

pod 'CHWebView'

要求

CHWebView 初始化

    CHWebView *webView = [[CHWebView alloc]initWithFrame:rect];
    [webView loadRequest:self.request];
    webView.delegate = self;
    [self.view addSubview:webView];

如果你想使用 UIWebView,调用一下方法

- ( instancetype)initWithUIWebView; 
- ( instancetype)initWithUIWebView : (CGRect)frame;

也可以通过 CHWebViewController 初始化

- (instancetype)initWithURL : (NSString *)url;

- (instancetype)initWithFile : (NSString *)url;

JS 调用 OC 代码

OC 代码的实现需要注册名称和注册方法接收的对象,如果继承 CHWebViewController 则只需要实现注册名称,Controller 默认为接收对象。

- (NSArray<NSString *> *)registerJavascriptName{
    return @[@"fetchMessage",@"show"];
}
- (NSObject *)registerJavaScriptHandler{
    return self;
}
- (void)fetchMessage : (NSDictionary *)dic{
}
- (void)show : (NSDictionary *)dic{

}

JS 代码的实现,在 js 的函数中通过使用 NativeBridge 这样一个对象(web 加载完之后自动注入)给 Native 发送消息,NativeBridge({name},{parameter})name 是指注册函数名,parameter 是指传入的参数.

   function nativeFounction() {
       var obj = { 'message' : 'Hello, JS!', 'numbers' : [ 1, 2, 3 ] };
       window.NativeBridge('fetchMessage',obj)
   }
    function showUIFuction(){
       window.NativeBridge('show')
    }

Object-C 调用 JS

- (void)invokeJavaScript : (NSString *)function;

- (void)invokeJavaScript : (NSString *)function completionHandler : (void (^)( id, NSError * error))completionHandler;

CHWebView 设计图

Correlation Link

http://chausson.github.io/2016/08/09/UIWebView%E4%B8%8EWKWebView/

1979 次点击
所在节点    问与答
1 条回复
newkengsir
2016-09-07 14:40:10 +08:00
纯分享 如果发错节点,请告知 谢谢支持

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/304555

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX