您的位置:首页 > 移动开发 > Objective-C

IOS 回调/通知主线程刷新-Objective-c,JavaScript交互篇

2016-01-25 23:12 501 查看
核心代码:

dispatch_async(dispatch_get_main_queue(), ^{ 
    //回调或者说是通知主线程刷新, 
    [self gotoXXViewController]; 
});


要解决的问题:在JavaScript调用IOS的时候,改变主线程的UI

环境:IOS,语言:Objective-c,WebView,JS交互,引入库:JavaScriptCore

准备工作:在WebView中,初始化一个和JavaScript交互的对象context

在.h文件创建空对象:JSContext *context;

在.m文件实例化对象:context =

[webviewvalueForKeyPath:@”documentView.webView.mainFrame.javaScriptContext”];

JavaScript: 调用IOS方法 : iossetXXValue

function setXXValue(){ 
    iossetXXValue(); 
}


Objective-c:执行操作

正确的写法:

context[@”iossetXXValue”] = ^() { 
   NSLog(@”success!”); 
   //通知主线程刷新 
   dispatch_async(dispatch_get_main_queue(), ^{ 
       //回调或者说是通知主线程刷新, 
      [self gotoXXViewController]; 
   }); 
};


错误的写法:会报错,UI刷新需要在主线程进行

context[@”iossetXXValue”] = ^() { 
   [self gotoXXViewController]; 
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: