iOS开发 网页中的alert/contirm 点击方法未执行

来源:互联网 发布:淘宝云客服考试试题 编辑:程序博客网 时间:2024/06/07 15:26

  1. 问题:
  2.     项目中“积分模块”用的是大麦城网页,在交互过程中网页中的confirm(ios对应alerview)点击未执行js代码。
  3. 解决:
  4.     最终找到这个代码片段,新建Category类方法,将一下代码写入。
  5. 扩展:
  6.     可修改alert、confirm风格,也常见于网页中的提示框未拉起。


  1. @interface UIWebView (JavaScriptAlert)  

  2. -(void) webView:(UIWebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(id)frame;  
  3. - (BOOL)webView:(UIWebView *)sender runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(id)frame; 
  4.  
  5. @end  
  6.   
  7. @implementation UIWebView (JavaScriptAlert)  
  8.   
  9. /** alert */

  10. - (void)webView:(UIWebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(id)frame 
  11. {  
  12.     UIAlertView* customAlert = [[UIAlertView alloc] initWithTitle:@"助手提示" message:message delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil];  
  13.     [customAlert show];  
  14. }  

  15. static BOOL diagStat = NO;  
  16. static NSInteger bIdx = -1;  

  17. /** contirm */

  18. - (BOOL)webView:(UIWebView *)sender runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(id)frame 
  19. {  
  20.     UIAlertView *confirmDiag = [[UIAlertView alloc] initWithTitle:@"助手提示"  
  21.                                                           message:message  
  22.                                                          delegate:self  
  23.                                                 cancelButtonTitle:@"取消"  
  24.                                                 otherButtonTitles:@"确定", nil nil];  
  25.       
  26.     [confirmDiag show];  
  27.     bIdx = -1;  
  28.       
  29.     while (bIdx==-1) {  
  30.         //[NSThread sleepForTimeInterval:0.2];  
  31.         [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1f]];  
  32.     }  
  33.     if (bIdx == 0){//取消;  
  34.         diagStat = NO;  
  35.     }else if (bIdx == 1) {//确定;  
  36.         diagStat = YES;  
  37.     }  
  38.     return diagStat;  
  39. }  
  40.   
  41. - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{  
  42.     bIdx = buttonIndex;  
  43. }  
  44.   
  45. @end  
0 0
原创粉丝点击