在App中的UITextView中打开链接

时间:2015-01-23 00:33:51

标签: ios swift uitextview nsurl uitextviewdelegate

我正在尝试打开我的UITextView在应用中识别的链接。我正在使用UITextView delegate方法shouldInteractWithURL来实现这一目标。

我的代码似乎适用于应用程序加载网址;但是,除了应用程序之外,它仍然在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中加载。

我还已将delegate的{​​{1}}分配给已实施此委托功能的UITextView

有谁知道如何让应用程序停止开启野生动物园?

1 个答案:

答案 0 :(得分:8)

仅当必须在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.
}