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

来源:互联网 发布:mac上用什么输入法 编辑:程序博客网 时间:2024/05/16 02:12

一 objc与javaScript交互

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

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

            NSString *jsCode = [NSStringstringWithFormat:@"%@(%@)",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*)[compentsobjectAtIndex:1])stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

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

       //方法名

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

       NSString *selecorName  = [detailMethod objectAtIndex:0];

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

        {

            [selfshowHudView];

        }

       return NO;

    }

    returnYES;

}



二 webview的goback和goForward的使用

   很简单,废话不多说

   

-(void)webViewDidStartLoad:(UIWebView *)webView

{

   [selfchangeBtnState];


- (void)webViewDidFinishLoad:(UIWebView *)webView

{

   [self changeBtnState];

- (void)changeBtnState

{

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

   self.btnBack.enabled    = [self.webcanGoBack];

   self.btnForward.enabled = [self.webcanGoForward];


}

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


 

0 0
原创粉丝点击