是否可以将文本链接添加到 TextView 中?我希望链接可能表现得像一个按钮,我可以在其中为其分配一个操作。
编辑:当我说分配一个动作时,我的意思是实际上在代码中给它一些东西。我想知道是否可以将“按钮”动态添加到我可以为其分配编码操作的文本中。
现场场景
想想像字典应用程序这样的东西。也许一个词的定义使用了另一个您可能不知道其定义的词,因此能够单击该词来立即搜索它而不必输入它将是一个很好的用户友好功能。不过,我猜这似乎不太可能。
是否可以将文本链接添加到 TextView 中?我希望链接可能表现得像一个按钮,我可以在其中为其分配一个操作。
编辑:当我说分配一个动作时,我的意思是实际上在代码中给它一些东西。我想知道是否可以将“按钮”动态添加到我可以为其分配编码操作的文本中。
现场场景
想想像字典应用程序这样的东西。也许一个词的定义使用了另一个您可能不知道其定义的词,因此能够单击该词来立即搜索它而不必输入它将是一个很好的用户友好功能。不过,我猜这似乎不太可能。
我建议使用NIAttributedLabel
Nimbus,一个开源的 iOS 库。您可以指定作为链接的文本范围,当用户点击它时,您会收到发送的委托消息。
Nimbus 主站点: http: //nimbuskit.info/
NIAttributedLabel 文档:http ://docs.nimbuskit.info/interface_n_i_attributed_label.html
我知道一种方法,但它的工作量很大。首先,您有一个 NSAttributedString,您可以显示文本视图。其次,属性你想成为按钮的文本范围。第三,将点击手势识别器分配给文本视图,在识别器调用的方法中,您将使用核心文本来确定点击是否发生在代表按钮的文本范围内。
以下是您将如何使用核心文本:使用属性字符串创建框架设置器。从框架设置器创建一个具有正方形形状的框架,它是文本视图的框架,由文本视图的填充插入。该框架将允许您获取文本视图中每一行的 y 原点,并且一旦您知道点击发生在哪一行上,您就可以使用该行通过给它一个x 偏移量。一旦知道了行上的字符索引,就可以将其添加到行范围的开头,并获取整个字符串中字符的索引。然后您可以检查它是否在您的按钮的文本范围内。如果是,那么您可以调用一个方法来模拟目标操作类型的行为。
我已经解释了如何完成这个过程,并指定了你需要什么样的核心文本对象,我让你查看具体的 api 细节:
你也可以使用我的 objc 核心文本包装器: https ://github.com/mysterioustrousers/MYSCoreText
在检查器中,转到 Text View Attributes 选项卡,然后确保选中“Detect Links”。
是的你可以。将 URL 添加到文本视图中,然后打开 Attributes Inspector。您将在那里看到一个用于检测链接的选项。
核心文本呢?它可以绘制多种文本。