【发布时间】:2018-02-18 23:55:35
【问题描述】:
在 Xcode 9 和 iOS 11 之前,我在包含多个链接的 UITableViewCell 中有一个 UITextView。每个链接都按预期工作,但是自从升级到 iOS 11 和 Xcode 9 后,这些链接不再有效。
UITextView 似乎无法识别任何与func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool 从未触发的触摸交互。
有没有其他人在升级后发现同样的问题?
【问题讨论】:
-
是的。这些设置需要到位才能在 ios11 之前使链接正常工作。我相信这是 ios11 中引入的更改,导致 UITextView 不再记录与 URL 的交互;文本是可选择的。
-
问题似乎与
UITextViewDelegate有关。UITableViewCell设置为委托,这很好,但似乎不再起作用。我通过在单元格中实现func textViewDidBeginEditing(_ textView: UITextView)对此进行了测试,我发现它并没有像interactwithURL 那样被调用。如果我将ViewController设置为委托,则在ViewController中调用该函数。 -
代理应该是
UITableViewCell。委托设置在override init(style: UITableViewCellStyle, reuseIdentifier: String?) -
我设法通过在
ViewController中实现interactwithURL而不是通过将ViewController设置为单元格的UITextViewDelegate来实现UITableViewCell。很高兴听到任何其他更优雅的方法。感谢您的帮助马特。在单独的说明中,我注意到链接需要比以前在 ios10 中更牢固的按压才能注册。 -
你应该回答你自己的问题;这是合法且受鼓励的,您的回答可能对其他人有用。在 48 小时内,您可以(并且应该)接受您自己的答案。 — 我想知道是否有什么东西在你设置之后让单元格不是成为委托。
标签: uitextview ios11