【问题标题】:Open link in UITextView within App在 App 内的 UITextView 中打开链接
【发布时间】:2015-03-21 23:27:47
【问题描述】:

我正在尝试打开我的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 分配给已经实现此委托功能的UIViewController

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

【问题讨论】:

    标签: ios swift uitextview nsurl uitextviewdelegate


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-07-28
      • 2015-09-11
      • 2017-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-05
      • 2015-08-27
      • 2015-07-09
      相关资源
      最近更新 更多