希望广大网友转载此文章,里面重现了一个iOS交互问题,希望看到的大神帮忙解惑,不胜感激;
公司这几天一直在搞iOS客户端与JS的交互,有一个问题一直搞不明白,在此重现;
首先是通过截获Html5页面的点击事件,事件截获后我们要通过
[webViewstringByEvaluatingJavaSc riptFromString:@"alert('test');"];来弹出一个JS弹出框来测试截获事件的成功;
然后普通这样的情况下是没有问题的,然而问题并不是在这里;
我们截获某按钮,比方说该按键是用来弹出一个iOS系统的ActionSheet,在这里我们用iOS8中的UIAlertController来解决,
UIAlertController* choose_vc = [UIAlertControlleralertControllerWithTitle :nil message:nilpreferredStyle:UIAlertControllerStyleAc
tionSheet];
[choose addAction:[UIAlertAction actionWithTitle:@"测试"style:UIAlertActionStyleDefaul t handler:^(UIAlertAction *action){
//问题出现在这里,同样的我们在action的回调方法中使用上述弹出测试框
[webViewstringByEvaluatingJavaSc riptFromString:@"alert('test');"];
}];
那么这里问题来了,框体如我们所愿的弹出来了,可是我们发现弹出后的框体不能确定了,整个界面完全停滞,无法再进行操作;
于是我们又进行了处理,将上述回调方法中的弹出方法写在用单线程处理后的方法中,如下,
[weak_selfperformSelector:@selector(evaluateJavaScrpt:) withObject:scriptafterDelay:0.0];
- (void)evaluateJavaScrpt:(NSString*)script
{
[WebViewstringByEvaluatingJavaSc
riptFromString:@"alert('test')!"];
}
问题解决了,然而这却让我陷入了思考,经查证未果,现记在这里,希望以后会碰到,有机会再做解决,当前理解可能是因为某个线程的runloop停止了;
公司这几天一直在搞iOS客户端与JS的交互,有一个问题一直搞不明白,在此重现;
首先是通过截获Html5页面的点击事件,事件截获后我们要通过
[webViewstringByEvaluatingJavaSc
然后普通这样的情况下是没有问题的,然而问题并不是在这里;
我们截获某按钮,比方说该按键是用来弹出一个iOS系统的ActionSheet,在这里我们用iOS8中的UIAlertController来解决,
UIAlertController* choose_vc = [UIAlertControlleralertControllerWithTitle
[choose addAction:[UIAlertAction actionWithTitle:@"测试"style:UIAlertActionStyleDefaul
}];
那么这里问题来了,框体如我们所愿的弹出来了,可是我们发现弹出后的框体不能确定了,整个界面完全停滞,无法再进行操作;
于是我们又进行了处理,将上述回调方法中的弹出方法写在用单线程处理后的方法中,如下,
[weak_selfperformSelector:@selector(evaluateJavaScrpt:) withObject:scriptafterDelay:0.0];
- (void)evaluateJavaScrpt:(NSString*)script
{
}
问题解决了,然而这却让我陷入了思考,经查证未果,现记在这里,希望以后会碰到,有机会再做解决,当前理解可能是因为某个线程的runloop停止了;