在 UITextView 中的特定单词上添加点击手势识别器
Posted
技术标签:
【中文标题】在 UITextView 中的特定单词上添加点击手势识别器【英文标题】:Add tap gesture recogniser on a specific word in a UITextView 【发布时间】:2013-07-10 11:14:33 【问题描述】:我有一个带有一些文字的UITextView
。此文本是一个属性字符串 (NSAttributedString
)。我已将文本的某些部分设置为粗体,并且只想在这些特定单词中添加TapGestureRecogniser
。
到目前为止,我一直在使用 UITextView
委托的 textViewDidChangeSelection
方法。但这会导致项目的其他部分出现问题。
有没有更直接的方法?
【问题讨论】:
也许你可以参考这个***.com/questions/15034652/… 【参考方案1】:您只能将 GestureRecognizer 添加到视图,而不是某些单词。 这是一项相当复杂的任务,没有简单的解决方案。
我可以考虑一些方法,例如:
在粗体字上方放置一个透明视图以获取 Tap。 在所有的UITextView中检测Tap,然后根据触摸的位置和粗体字的位置来计算,如果碰到了。这两个选项都需要大量代码和很多可能失败的边缘情况。
正如我所说,这是一个非常复杂的情况,您可能希望继续使用 textViewDidChangeSelection 并解决问题,我们可以为您提供帮助。
【讨论】:
如果文本是静态的,在单词顶部添加透明视图会很好。但事实并非如此。它是用户可编辑的,并且可以被其他视图附加。 那么第二个选项,你需要使用字体计算字符串的大小来尝试找出位置,使用 sizeWithFont: 我有一个 UITextView,它接受用户的输入,还有表格视图(单元格)。所选单元格的内容将附加到文本视图中的字符串(或替换先前的选择)。然后将字符串转换为 NSAttributedString。我想要实现的是,当用户点击单词(从表格中选择)时,表格视图应该重新出现,因此用户可以更改他们的选择。类似于 Facebook ios 应用的状态更新视图。如果在文本视图中点击标记的朋友或位置,则相应的视图会重新出现。呸! 迟到的评论,但你的提示对我来说非常有效。使用 UITextPosition + UITextGranularity + firstRectForRange。以上是关于在 UITextView 中的特定单词上添加点击手势识别器的主要内容,如果未能解决你的问题,请参考以下文章
如何通过点击 UITextView 中的特定字符来显示圆角灰色背景?