我需要在 iOS 17 中使用
UITextView
拦截链接点击。我使用了下面的委托,但 UITextItemInteraction
已被弃用。
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
print(URL)
return false
}
现在如何在 Swift 中拦截点击链接?
谢谢!
自 iOS 17 起,与
UITextViewDelegate
相关的所有 shouldInteractWith:
方法均已弃用。它们已被 4 个采用 UITextItem
参数的新委托方法取代。
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
}