我正在尝试打开我的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
。
有谁知道如何让应用程序停止开启野生动物园?
答案 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.
}