iOS 17中UITextView如何拦截链接点击? UITextItemInteraction 已弃用

问题描述 投票:0回答:1

我需要在 iOS 17 中使用

UITextView
拦截链接点击。我使用了下面的委托,但
UITextItemInteraction
已被弃用。

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

现在如何在 Swift 中拦截点击链接?

谢谢!

ios swift uitextview
1个回答
0
投票

自 iOS 17 起,与

UITextViewDelegate
相关的所有
shouldInteractWith:
方法均已弃用。它们已被 4 个采用
UITextItem
参数的新委托方法取代。

其中 4 个是

textView(_:primaryActionFor:defaultAction:)

当您看到使用旧委托方法之一的弃用警告时,您可以看到以下内容:

或者,如果您在尝试添加旧的已弃用方法之一时使用代码完成,您将看到:

指出了两种可能的替换委托方法(尽管它仅引用了签名的一部分)。

UITextItem
 的文档中查找 4 个 
UITextViewDelegate
相关的委托方法。

以下内容应该替换您问题中的代码:

func textView(_ textView: UITextView, primaryActionFor textItem: UITextItem, defaultAction: UIAction) -> UIAction? {
    if case .link(let url) = textItem.content {
        print(url)
    }

    return nil
}
© www.soinside.com 2019 - 2024. All rights reserved.