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

WebView与JS交互问题重现

2015-05-21 09:23 288 查看
希望广大网友转载此文章,里面重现了一个iOS交互问题,希望看到的大神帮忙解惑,不胜感激;

公司这几天一直在搞iOS客户端与JS的交互,有一个问题一直搞不明白,在此重现;

首先是通过截获Html5页面的点击事件,事件截获后我们要通过

[webViewstringByEvaluatingJavaScriptFromString:@"alert('test');"];来弹出一个JS弹出框来测试截获事件的成功;

然后普通这样的情况下是没有问题的,然而问题并不是在这里;

我们截获某按钮,比方说该按键是用来弹出一个iOS系统的ActionSheet,在这里我们用iOS8中的UIAlertController来解决,

UIAlertController* choose_vc = [UIAlertControlleralertControllerWithTitle:nil message:nilpreferredStyle:UIAlertControllerStyleActionSheet];

[choose addAction:[UIAlertAction actionWithTitle:@"测试"style:UIAlertActionStyleDefault handler:^(UIAlertAction *action){

//问题出现在这里,同样的我们在action的回调方法中使用上述弹出测试框

[webViewstringByEvaluatingJavaScriptFromString:@"alert('test');"];

}];

那么这里问题来了,框体如我们所愿的弹出来了,可是我们发现弹出后的框体不能确定了,整个界面完全停滞,无法再进行操作;

于是我们又进行了处理,将上述回调方法中的弹出方法写在用单线程处理后的方法中,如下,

[weak_selfperformSelector:@selector(evaluateJavaScrpt:) withObject:scriptafterDelay:0.0];

- (void)evaluateJavaScrpt:(NSString*)script

{

[WebViewstringByEvaluatingJavaScriptFromString:@"alert('test')!"];

}

问题解决了,然而这却让我陷入了思考,经查证未果,现记在这里,希望以后会碰到,有机会再做解决,当前理解可能是因为某个线程的runloop停止了;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: