2017-07-03 55 views
0

現在、iPhone用のGoogle Castアプリを作成しています。私の望むように機能し、Googleキャストでビデオをキャストできます。私の唯一の問題は、訪問しているウェブサイトのユーザーがポップアップ広告を持っている場合、webviewはその広告サイトに自動的にリダイレクトされることです(一度に複数のリダイレクトが行われることもあります)。サファリのように複数のタブを実装するにはどうすればよいですか?

UIWebViewにはadBlock機能がないので、複数のタブ機能を実装する必要があります。そのため、広告を新しいタブで開くことができ、ユーザーは手動で広告タブを閉じることができます。

ありがとうございます。

あなたの経験がありますか?

答えて

2

最初に、UIWebViewの代わりにWKWebViewを使用する必要があります。現在、タブについては、実際にはこれを処理するコンポーネントはありませんが、WebviewのデリゲートWKWebViewのWKNavigationDelegateとUIWebViewのUIWebViewDelegate)、別のWebviewでリクエストを開く必要があると感じたら、そのリクエストを現在のWebviewでブロックし、新しいWebviewを入れて新しいビューを作成し、閉じるボタンなどを使用しますそれ以外の場合は、「タブ」にそのリクエスト(元のウェブビューでブロックしたもの)を持って実行する必要があると感じます。

1

decidePolicyForNavigationActionデリゲートメソッドでは、新しいWKWebViewクラスを宣言し、前のWKWebViewクラスに基づいて、navigationTypeまたはrequestに基づくクラス。たとえば、以下のコードスニペットをご覧ください。

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{ 

if (navigationAction.navigationType == WKNavigationTypeLinkActivated) { // OR if (![navigationAction.request.URL.Path isEqualToString:@"Previous URL Path"]) { 

    // Add cancel button at top of new tab 
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
    btn.frame = CGRectMake(5, 5, 50, 20); 
    [btn setTitle:@"Close" forState:UIControlStateNormal]; 
    btn.backgroundColor = [UIColor redColor]; 
    [btn addTarget:self action:@selector(close:) forControlEvents:UIControlEventTouchUpInside]; 

    CGRect nFrm = oldWebVw.frame; // Set frame as per your requirement. 
    nFrm.origin.y = 100; 
    nFrm.size.height -=120; 

    newWebVw = [[WKWebView alloc] initWithFrame:nFrm]; 
    newWebVw.backgroundColor = [UIColor blueColor]; 
    [newWebVw addSubview:btn]; 
    [oldWebVw addSubview:newWebVw]; 
    [newWebVw loadRequest:navigationAction.request]; 
    decisionHandler(WKNavigationActionPolicyCancel); // You must cancel the policy else the new request loades on previous WKWebView class 
    return; 
    } 
    decisionHandler(WKNavigationActionPolicyAllow); 
} 
関連する問題