关于UIWebView的一些应用,包括与JS交互,前进,后退等

一 objc与javaScript交互

   1).传统的与JS交互的方式有导入PhoneGap,但这里讨论的是通过拦截URL的方式来交互。

   objc向JS传参的方式比较简单:

            NSString *jsCode = [NSString stringWithFormat:@"%@(%@)",callbackMethod,paramString];

    [webview stringByEvaluatingJavaScriptFromString:jsCode];

其中callbackMethod是JS端方法名,paramString是要传的参数名


  2).JS调用objc的方式采用拦截URL;比如在点击webview上按钮时,调用 iOS buttonClick方法。

    如下方法的作用是当点击按钮时,JS返回一个“#ios|buttoncolick|param|”(格式根据自己需要自定义)的RURL,shouldStartLoadWithRequest捕捉到并做相应的处理,并返回NO,否则返回YES进行web view页面加载。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

{

    NSString *requestString = [[request URL] absoluteString];

    NSInteger Meathodindex  = [requestString rangeOfString:@"#ios"].location;

    NSArray  *compents = [requestString componentsSeparatedByString:@"#ios:"];

    if (Meathodindex != NSNotFound)

    {

        //poctol是方法名和参数以及方法ID的集合,用|分割

        NSString *poctol = [((NSString*)[compents objectAtIndex:1]) stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

        NSArray  *detailMethod = [poctol componentsSeparatedByString:@"|"];

        //方法名

        self.callbackMethod = [detailMethod objectAtIndex:detailMethod.count-2];

        NSString *selecorName  = [detailMethod objectAtIndex:0];

        if([selecorName isEqualToString:@"buttonClick"])

        {

            [self showHudView];

        }

        return NO;

    }

    return YES;

}



二 webview的goback和goForward的使用

   很简单,废话不多说

   

-(void)webViewDidStartLoad:(UIWebView *)webView

{

   [self changeBtnState];


- (void)webViewDidFinishLoad:(UIWebView *)webView

{

   [self changeBtnState];

- (void)changeBtnState

{

    NSLog(@"xxxx:%d",[self.web canGoBack]);

    self.btnBack.enabled    = [self.web canGoBack];

    self.btnForward.enabled = [self.web canGoForward];


}

这个有一个问题就是第一次加载页面跳到第二个页面的时候不能goback,cangoback返回的结果一直是NO,后在satckOverflower上看到帖子说是IOS7.1的BUG,在6.0上运行良好,试了下果然如此http://stackoverflow.com/questions/18948373/why-is-uiwebview-cangoback-no-in-ios7


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值