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. メインビュー
    • UIView
      • UIScrollView
        • UIWebView
        • UIWebView
        • ...

メイン ビュー コントローラでイベントを確認できるように、コールバックを「バブル」する方法はありますか?

4

1 に答える 1

0

shouldStartLoadWithRequest デリゲート メソッドをオーバーライドするときは、必ず (NO) を返すようにしてください。

また、コードに [viewController presentModalViewController:webViewController animation: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 に答える