【问题标题】:Add tap gesture recogniser on a specific word in a UITextView在 UITextView 中的特定单词上添加点击手势识别器
【发布时间】:2013-07-10 11:14:33
【问题描述】:

我有一个带有一些文字的UITextView。此文本是一个属性字符串 (NSAttributedString)。我已将文本的某些部分设置为粗体,并且只想在这些特定单词中添加TapGestureRecogniser

到目前为止,我一直在使用 UITextView 委托的 textViewDidChangeSelection 方法。但这会导致项目的其他部分出现问题。

有没有更直接的方法?

【问题讨论】:

标签: ios uitextview uitapgesturerecognizer


【解决方案1】:

您只能将 GestureRecognizer 添加到视图,而不是某些单词。 这是一项相当复杂的任务,没有简单的解决方案。

我可以考虑一些方法,例如:

  • 在粗体字上方放置一个透明视图以获取 Tap。
  • 在所有的UITextView中检测Tap,然后根据触摸的位置和粗体字的位置来计算,如果碰到了。

这两个选项都需要大量代码和很多可能失败的边缘情况。

正如我所说,这是一个非常复杂的情况,您可能希望继续使用 textViewDidChangeSelection 并解决问题,我们可以为您提供帮助。

【讨论】:

  • 如果文本是静态的,在单词顶部添加透明视图会很好。但事实并非如此。它是用户可编辑的,并且可以被其他视图附加。
  • 那么第二个选项,你需要使用字体计算字符串的大小来尝试找出位置,使用 sizeWithFont:
  • 我有一个 UITextView,它接受用户的输入,还有表格视图(单元格)。所选单元格的内容将附加到文本视图中的字符串(或替换先前的选择)。然后将字符串转换为 NSAttributedString。我想要实现的是,当用户点击单词(从表格中选择)时,表格视图应该重新出现,因此用户可以更改他们的选择。类似于 Facebook iOS 应用的状态更新视图。如果在文本视图中点击标记的朋友或位置,则相应的视图会重新出现。呸!
  • 迟到的评论,但你的提示对我来说非常有效。使用 UITextPosition + UITextGranularity + firstRectForRange。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
  • 2019-03-27
  • 1970-01-01
相关资源
最近更新 更多