首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何像safari一样实现多个标签?

如何像safari一样实现多个标签?
EN

Stack Overflow用户
提问于 2017-07-03 15:51:14
回答 3查看 1.8K关注 0票数 3

我目前正在为iPhone创建一个google-cast应用。这一切都如我所愿,我可以在GoogleCast上投放一段视频。我唯一的问题是,如果用户访问的网站有弹出广告,webview会自动重定向到该广告站点(有时会同时重定向多个)。

由于UIWebView没有adBlock功能,我想也许我应该实现多个选项卡功能,这样广告就可以在新的选项卡中打开,用户可以手动关闭广告选项卡。

提前谢谢。

你们有没有这方面的经验?

EN

回答 3

Stack Overflow用户

发布于 2017-07-03 16:35:28

首先,您需要使用WKWebView而不是UIWebView,现在关于选项卡,实际上还没有一个已创建的组件可以为您处理此问题,但您可以做的是截获来自webview的委托(对于WKWebView为WKNavigationDelegate,对于UIWebView为UIWebViewDelegate )的请求,当您觉得一个请求需要在一个单独的webview中打开时,您就在当前webview中阻止该请求,并创建一个新视图,其中嵌套一个新的webview和一个关闭按钮,以及您认为“tab”需要在其中执行该请求(即您在原始webview中阻止的请求)的任何其他内容

票数 3
EN

Stack Overflow用户

发布于 2017-10-17 16:25:42

decidePolicyForNavigationAction委托方法中,您可以声明一个新的WKWebView类,并将其作为子视图添加到以前基于navigationTyperequestWKWebView类中。例如,看看下面的代码片段,我是怎么做的,这对我来说很好。

代码语言:javascript
复制
- (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);
} 
票数 2
EN

Stack Overflow用户

发布于 2021-06-20 07:43:15

这是一个开源的ios浏览器,支持多个选项卡

Radium Browser

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44880331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档