NSMutableAttributedString中的可点击链接需要显示另一个viewcontroller / storyboard

时间:2019-06-11 09:34:58

标签: swift uitextview nsmutableattributedstring swift5

我有一个UITextView和NSMutableAttributedString,它们具有可单击的链接。我需要这个来显示另一个故事板,但不太确定该怎么做。

到目前为止,我所拥有的仅适用于外部链接,但不适用于情节提要。任何帮助将不胜感激。

不确定下面的代码是否是实现此目标的最佳方法?

private val injection = incrementConcurrentUsers(1)
.times(56)
.eachLevelLasting(1700 millis)
.startingFrom(10)

编辑

在NikR回答之后,我已将代码更新为以下代码,但仍然没有成功。它仍在加载Google。

class HomeViewController: UIViewController {

    @IBOutlet weak var textView: UITextView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let attributedString = NSMutableAttributedString(string: "Already have an account? Log in")
        attributedString.addAttribute(.link, value: "", range: NSRange(location: 25, length: 6))

        textView.attributedText = attributedString

    }

    func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
        UIApplication.shared.open(URL)

        return false
    }


}

3 个答案:

答案 0 :(得分:0)

是的,这是正确的方法。 但不能致电:

UIApplication.shared.open(URL)

只需启动您的VC并显示/展示它:

let vc = UIStoryboard(name: "StoryboardName", bundle: nil).instantiateInitialViewController()
show( vc, sender: self )

别忘了:

textView.delegate = self

答案 1 :(得分:0)

您可以设置为textView:

textView.dataDetectorTypes = .link

答案 2 :(得分:0)

您应为文本视图启用isSelectable并禁用isEditable。

textView.isSelectable = true
textView.isEditable = false

不要忘记这样做

textView.delegate = self

此Delegate方法将用于处理点击

func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {

}