在 App 内的 UITextView 中打开 link
Open link in UITextView within App
我正在尝试打开我的 UITextView
在应用程序中识别的 link。我正在使用 UITextView delegate
方法 shouldInteractWithURL
来实现这一点。
我的代码似乎适用于 url 的应用内加载;但是,除了在应用程序内,它还在 Safari 中打开 link。有什么办法可以解决这个问题吗?
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
只是我自定义的 class,它在整个屏幕上显示 UIWebView
。它有一个 属性 urlToLoad
,这是它将加载到 UIWebView
.
中的 url
我还将 UITextView
的 delegate
分配给已经实现此委托功能的 UIViewController
。
有谁知道如何让应用停止打开 safari 吗?
仅当 link 必须在 Safari 中打开时,shouldInteractWithURL
函数才应 return true
。如果你自己处理 link 你应该 return 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.
}
我正在尝试打开我的 UITextView
在应用程序中识别的 link。我正在使用 UITextView delegate
方法 shouldInteractWithURL
来实现这一点。
我的代码似乎适用于 url 的应用内加载;但是,除了在应用程序内,它还在 Safari 中打开 link。有什么办法可以解决这个问题吗?
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
只是我自定义的 class,它在整个屏幕上显示 UIWebView
。它有一个 属性 urlToLoad
,这是它将加载到 UIWebView
.
我还将 UITextView
的 delegate
分配给已经实现此委托功能的 UIViewController
。
有谁知道如何让应用停止打开 safari 吗?
仅当 link 必须在 Safari 中打开时,shouldInteractWithURL
函数才应 return true
。如果你自己处理 link 你应该 return 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.
}