在ios8中引入了WKWebView控件,通过在头文件引用
#import <WebKit/WebKit.h>来使用该控件,
这个控件与oc的原生控件uiwebview很相似,它更方便oc与js的相互通讯。
1。oc调用js方法例子:
通过方法:
– (void)evaluateJavaScript:(NSString *)javaScriptString completionHandler:(void (^)(id,NSError *))completionHandler;
调用js中的方法,例如我们可以这样使用这个方法:
– (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{
[_theWebView evaluateJavaScript:promptCode completionHandler:^(id object,NSError *error) { }];
}
当wkwebview把html加载完之后,调用此方法,其中@"mymethd(\&;%@\&;)",是方法名和要传的参数
2.js给oc发送通知例子:
– (void)viewDidLoad {
mainBundle] pathForResource:@"htmlname"ofType
NSURL *url = [NSURLfileURLWithPath:path];
NSURLRequest *request = [NSURLRequestrequestWithURL:url];
WKWebViewConfiguration *theConfiguration =
[[WKWebViewConfiguration
[theConfiguration.userContentController
addScriptMessageHandler:selfname
alloc
configuration:theConfiguration];
navigationDelegate =
//- (void)webView:(WKWebView*)webView didFinishNavigation:(WKNavigation*)navigation方法代理
[_theWebViewloadRequest:request];
addSubview:_theWebView];
}
在js方法中这样给oc发送通知:
function postMyMessageA()
{
var message = { ‘message’ :’You choose the A’};
window.webkit.messageHandlers.myName.postMessage(message);
}
这是oc中收到通知后回调的方法:
– (void)userContentController:(WKUserContentController *)userContentController
didReceiveScriptMessage:(WKScriptMessage *)message
{
NSDictionary * messageDic = [[NSDictionaryalloc]initWithDictionary:message.body];
NSString * messageStr = [messageDic objectForKey:@"message"];
alloccancelButtonTitle,nil];
[messAlertshow];
}
,造物之前,必先造人。