【问题标题】:Prevent UIWebView Pop Out to Safari, But Still Load Page防止 UIWebView 弹出到 Safari,但仍然加载页面
【发布时间】:2016-01-15 12:27:00
【问题描述】:

我正在开发一个使用大量 UIWebViews 的 iOS 应用程序。有没有办法防止UIWebView 弹出到 Safari(iFrame 代码)但仍然加载页面?

换句话说,在webView:shouldStartLoadWithRequest:navigationType: 中返回YES,但不要让网页弹出到Safari。

编辑: web视图端有需要执行的进程,所以我需要返回YES。但这些过程也会无意中导致应用程序在 Safari 中启动 URL。我正在寻找一种方法来拦截它,并选择是否在 Safari 中启动 URL。

【问题讨论】:

  • “弹出到 Safari”是什么意思?如果您返回 YES 页面加载,不是吗?这不是你说的你想要的吗?
  • web视图端有进程需要执行,所以需要返回YES。但该过程也会无意中导致应用程序在 Safari 中启动 URL。我正在寻找一种方法来拦截它,并选择是否在 Safari 中启动 URL。
  • “但该过程也会无意中导致应用程序在 Safari 中启动 URL”我从未见过这种情况。如果调用openURL,Safari 就会启动。这些是您自己的网页吗?为什么会这样?
  • 它是一个混合应用程序,依赖于它的移动网络计数器部分提供的多个视图。他们是项目所需要的。我无法确切说明为什么会发生这种情况,但网络端已要求我处理阻止 Safari 启动的问题。
  • 好吧,我认为他们错了。这是他们的错,他们必须阻止它。查看这个问题和答案:stackoverflow.com/questions/27529966/… 一切都围绕着网络应用程序内部的东西。

标签: ios objective-c cocoa-touch uiwebview


【解决方案1】:

Apple 在 iOS 9 上引入了 Safari 视图控制器。Safari 视图控制器是一个预构建的浏览器,它具有移动 Safari 的所有花里胡哨,但无需离开您的应用即可呈现。

首先我们需要导入 Safari 服务

#import <SafariServices/SafariServices.h>

对于目标 C:-

NSString *yourUrl = @"http://yourURL";
SFSafariViewController *svc= [[SFSafariViewController alloc] initWithURL:[NSURL URLWithString: yourUrl]];
[self presentViewController:svc animated:YES completion:nil];

对于斯威夫特:-

let svc = SFSafariViewController(URL: NSURL(string: self.urlString)!)
self.presentViewController(svc, animated: true, completion: nil)

【讨论】:

    猜你喜欢
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 2015-04-11
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多