如何在 Swift 5 中单击超链接时推送视图控制器
How to push view controller on click of HyperLink in Swift 5
您好,我必须在单击超链接时推送 viewController。我有 NSMutableAttributedString 文本。该属性文本有两个 hyperlink 示例 GoToHomeScreen 和 aboutUs 都是点击 aboutUs[=21 时的超链接=] 需要打开一个工作正常的 link
let attributesString = NSMutableAttributedString(string: "GoToHomeScreen for know more about app and for info aboutUs ")
attributesString.addAttribute(.link, value: "https://apple.com/aboutUs", range: NSRange(location: 50, length: 7))
textFields.isEditable = false
textFields.delegate = self
textFields.attributedText = attributesString
打开 aboutUs 工作正常,但我们如何在点击 GoToHomeScreen 时推送视图控制器
注意:- 我正在使用 UITextView 来执行它,我不能使用按钮
您还需要为 GoToHomeScreen 添加 link。
attributesString.addAttribute(.link, value: "myApp://GoToHomeScreen", range: ...)
因为你已经设置了委托,实现 textView(_:shouldInteractWith:in:interaction:)
:
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
if URL.absoluteString == "myApp://GoToHomeScreen" {
pushHomeScreenVC()
return false
}
return true
}
您好,我必须在单击超链接时推送 viewController。我有 NSMutableAttributedString 文本。该属性文本有两个 hyperlink 示例 GoToHomeScreen 和 aboutUs 都是点击 aboutUs[=21 时的超链接=] 需要打开一个工作正常的 link
let attributesString = NSMutableAttributedString(string: "GoToHomeScreen for know more about app and for info aboutUs ")
attributesString.addAttribute(.link, value: "https://apple.com/aboutUs", range: NSRange(location: 50, length: 7))
textFields.isEditable = false
textFields.delegate = self
textFields.attributedText = attributesString
打开 aboutUs 工作正常,但我们如何在点击 GoToHomeScreen 时推送视图控制器
注意:- 我正在使用 UITextView 来执行它,我不能使用按钮
您还需要为 GoToHomeScreen 添加 link。
attributesString.addAttribute(.link, value: "myApp://GoToHomeScreen", range: ...)
因为你已经设置了委托,实现 textView(_:shouldInteractWith:in:interaction:)
:
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
if URL.absoluteString == "myApp://GoToHomeScreen" {
pushHomeScreenVC()
return false
}
return true
}