【问题标题】:Catching modal UIWebView links touches捕捉模态 UIWebView 链接触摸
【发布时间】:2012-12-04 01:13:24
【问题描述】:

我有一个视图控制器,我正在拦截它管理的 Web 视图中链接的触摸。

我的主视图控制器有这个方法。

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

{
    //I can see this request come in upon a touch
    NSURL *url = request.URL;
    NSString *urlString = url.absoluteString;
    NSLog(@"raw: %@", urlString);

    //do some stuff (like figure out what capturedFilename is) 
    ExplainViewController *explanation = [[ExplainViewController alloc] initWithNibName:@"ExplainViewController" bundle:nil file:capturedFilename];
    [self.navigationController presentModalViewController:explanation animated:YES];
}

这会正确加载模态视图。
ExplainViewController 本身有一个 webView。 当用户触摸 ExplainViewConroller 中的链接时,我也想处理该请求(并呈现另一个模式视图)

ExplainViewController 有这个,但我没有从任何一种方法(以下或上一个)中获得日志活动:

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType 
{
    NSURL *url = request.URL;
    NSString *urlString = url.absoluteString;
    NSLog(@"raw: %@", urlString);
}

我想知道这个链接触摸请求的去向以及如何拦截它。

提到的两个视图控制器都在他们的 .h <UIWebViewDelegate>

【问题讨论】:

    标签: iphone xcode uiwebview


    【解决方案1】:

    您提到两个视图控制器都符合UIWebViewDelegate 协议,但是将ExplainViewController.h 的笔尖中的UIWebView 的委托出口设置为ExplainViewController 的实例。除非设置了UIWebView 委托属性,否则它不会调用该方法。

    【讨论】:

      【解决方案2】:
      - (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
      if (navigationType == UIWebViewNavigationTypeLinkClicked) {
      
          BrowserController *browserController = [[BrowserController alloc] initWithUrl:request.URL.absoluteString];
          UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:browserController];
          [self.navigationController presentModalViewController: navController animated:YES];
          [browserController release];
          [navController release];
      
          return NO;
      }
      return YES;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-31
        • 1970-01-01
        • 1970-01-01
        • 2015-08-12
        • 1970-01-01
        • 1970-01-01
        • 2014-07-27
        • 1970-01-01
        相关资源
        最近更新 更多