我正在尝试打开我的 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。
我还将 UITextView
的 delegate
分配给已经实现此委托(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/