ios - 在 App 内的 UITextView 中打开链接

标签 ios swift uitextview nsurl uitextviewdelegate

我正在尝试打开我的 UITextView 在应用程序中识别的链接。我正在使用 UITextView 委托(delegate) 方法shouldInteractWithURL 来实现这一点。

我的代码似乎适用于 url 的应用内加载;但是,除了在应用程序内,它仍在 Safari 中打开链接。有什么办法可以解决这个问题吗?

func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool {

    println("called")
    let webViewController = WebViewController()        
    webViewController.urlToLoad = URL

    if let navigationController = navigationController {
        println("navigating")
        navigationController.pushViewController(webViewController, animated: true)
        return true
    }
    else {
        return false
    }
}

请注意,WebViewController 只是我创建的一个自定义类,它在整个屏幕上显示一个 UIWebView。它有一个属性 urlToLoad,这是它将加载到 UIWebView 中的 url。

我还将 UITextViewdelegate 分配给已经实现此委托(delegate)功能的 UIViewController

有谁知道如何让应用程序停止打开 safari 吗?

最佳答案

仅当必须在 Safari 中打开链接时,shouldInteractWithURL 函数才应返回 true。如果您自己处理链接,则应返回 false。检查下面代码中更改的行。

您还可以使用可选链接而不是 if 条件来调用 pushViewController

func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool {

    let webViewController = WebViewController()        
    webViewController.urlToLoad = URL

    navigationController?.pushViewController(webViewController, animated: true)

    return false // Changed line.
}

关于ios - 在 App 内的 UITextView 中打开链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28101188/

相关文章:

ios - 如何使用 Turbolinks-ios 打开链接的 pdf

Objective-C,UITextView中首字母的自定义样式

ios - 无法以编程方式将文件从包加载到 UITextView 和 UIImageView

ios - UITextView 中链接的不同样式

iphone - 如何根据属性值加载不同的自定义引脚或标识符?

ios - 在 SwiftUI 中添加圆角半径时如何隐藏背景颜色的溢出?

iphone - 快门动画上方的 cameraOverlayView

ios - 画不出直线

swift - 从详细信息以编程方式显示主视图

ios - 如何在 Swift 2 [MapKit] 中从 map 中删除注释