使用 PDFKit 点击注释后触发应用内浏览器 - iOS 11

Trigger In-App-Browser after tapping on Annotation with PDFKit - iOS 11

我正在使用 Apple 的 PDFKit 开发一个应用程序,并设法放置了一些带有工作 PDFActionURL 的注释按钮,点击它们后会打开 iOS 标准浏览器。

不幸的是,我没有找到有效的解决方案,如何在应用内浏览器中打开关联链接或在网络视图中加载它。点击 AnnotationButton 后,PDFKit 会自动打开 Safari,我还没有找到 属性 或其他关于 iOS 的方法来通过操纵 f.e 来影响此行为。 PDFAction.

let urlString = "https://www.apple.com"
let urlAction = PDFActionURL(url: urlString)
urlButton.action = urlAction
pdfPage.addAnnotation(urlButton)

有没有办法在每个 UIApplication.shared.open() 时强制调用应用内浏览器或操纵 PDFAction 的执行?

您想像这样实例化视图:

let webV:UIWebView = UIWebView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height))
webV.loadRequest(NSURLRequest(URL: NSURL(string: "http://www.google.co.in")))
webV.delegate = self;
self.view.addSubview(webV)

Found HERE

为了正确地做到这一点,我会在您的情节提要中创建一个新的 ViewController,嵌套在 navigationController 中并转到注释选择视图。使用与上述类似的一组代码在 viewDidLoad 上显示您的内容。该代码可能在 swift 的旧版本中,因此您需要对其进行更新。在提供的 link 中有关于使用关联的 delegate 的更多详细信息。

最后,我自己弄明白了 ;) 我忽略了 PDFViewDelegate

的一个功能

通过将pdfView的delegate设置为涉及的ViewController并使用该函数

func pdfViewWillClick(onLink sender: PDFView, with url: URL) {
        print(url)
}

您可以使用 PDFActionButton 的关联 URL 并触发 In-App-Browser(例如 SFViewController)。