1

我有UIWebView一个代表id<UIWebViewDelegate>。当我单击 UIWebView 中的链接时,我会NSURLRequest在回调中获得对象:

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

我想做的是:

- (void)presentWebViewControllerWithUrl:(NSURL*)URL{
      SVModalWebViewController *webViewController = [[SVModalWebViewController alloc] initWithURL:URL];
      webViewController.modalPresentationStyle = UIModalPresentationPageSheet;
      webViewController.availableActions = SVWebViewControllerAvailableActionsOpenInSafari | SVWebViewControllerAvailableActionsCopyLink | SVWebViewControllerAvailableActionsMailLink;
      [self presentModalViewController:webViewController animated:YES];
}

当我将此代码放在我的主视图控制器中时,会出现模式 Web 视图,但如果我将它放在我的委托中,它不会出现。我如何让它出现?


更新:

NO从简单的返回shouldStartLoadWithRequest使我的 UIWebViews 变成白色,没有内容。似乎在 webviews 加载时正在调用回调。我正在加载本地存储HTML到它们中[web loadHTMLString:@"..." baseUrl: nil] 的模式永远不会出现。

我的视图层次结构如下:

  1. 主视图
    • 界面视图
      • UIScrollView
        • UIWebView
        • UIWebView
        • ...

有没有办法“冒泡”回调,以便我可以在主视图控制器中看到事件?

4

1 回答 1

0

确保在覆盖您的 shouldStartLoadWithRequest 委托方法时返回 (NO)。

另外,我在您的代码中看不到 [viewController presentModalViewController:webViewController animated:YES],如下所示:

 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
    {
     if (navigationType != UIWebViewNavigationTypeLinkClicked)
      return (YES);

     SVModalWebViewController *webViewController = [[SVModalWebViewController alloc] initWithURL:[request URL]]; 
     webViewController.modalPresentationStyle = UIModalPresentationPageSheet;  
     webViewController.availableActions = SVWebViewControllerAvailableActionsOpenInSafari | SVWebViewControllerAvailableActionsCopyLink | SVWebViewControllerAvailableActionsMailLink; 
     [myViewController presentModalViewController:webViewController animated:YES];
     return(NO);
    }
于 2012-08-22T17:48:58.497 回答