IOS 回调/通知主线程刷新-Objective-c,JavaScript交互篇
2016-01-25 23:12
501 查看
核心代码:
要解决的问题:在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
Objective-c:执行操作
正确的写法:
错误的写法:会报错,UI刷新需要在主线程进行
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]; };
相关文章推荐
- Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法
- 韩顺平 javascript教学视频_学习笔记16_Object类_闭包_成员函数再说明_聪明的猪小练习
- 019: class, objects and instance: property
- Objective-C之成魔之路【16-使用文件】
- Objective C类方法load和initialize的区别
- @dynamic 模拟NSManagedObject类的内部实现,AFN的非常规用法
- [[dic objectForKey:@"name"] description]
- Object-C类、方法、构造函数(2)
- Objective-C 在Categroy中创建属性(Property)
- Python内部机制-PyTypeObject对象
- objective-c之各种数值
- Objective-C位运算符
- 【Ubuntu 64bit】libz.so.1: cannot open shared object file: No such file or directory 【Android NDK】
- 【Ubuntu 64bit】libz.so.1: cannot open shared object file: No such file or directory 【Android NDK】
- error C2712: Cannot use __try in functions that require object unwinding
- error C2712: Cannot use __try in functions that require object unwinding
- [iOS]setValue和setObject区别
- ArcGIS Objects开发-QI接口查…
- 4.3 Routing -- Generated Objects
- Python内部机制-PyObject对象