Ios 如何从点击位置获取UITextView中文本的范围值?

Ios 如何从点击位置获取UITextView中文本的范围值?,ios,uitextview,nsrange,Ios,Uitextview,Nsrange,我有一个UITextView,其中包含一些文本内容。我需要从点击位置获得字符/字符串的精确范围值。我为UITextView设置了TapGestureRecognitor。在它的动作方法中,我需要得到抽头位置的范围。怎么可能呢?我测试了Stackoverflow的一些答案,但它们并不完美。提前感谢。您看过UITextView文档了吗 可以使用此selectedRange方法确定用户选择的文本范围 后期编辑:这是最近被否决的,给了我一个机会重新阅读我的答案,我也会否决3年前的答案 最新答复: 如果有

我有一个UITextView,其中包含一些文本内容。我需要从点击位置获得字符/字符串的精确范围值。我为UITextView设置了TapGestureRecognitor。在它的动作方法中,我需要得到抽头位置的范围。怎么可能呢?我测试了Stackoverflow的一些答案,但它们并不完美。提前感谢。

您看过UITextView文档了吗

可以使用此selectedRange方法确定用户选择的文本范围

后期编辑:这是最近被否决的,给了我一个机会重新阅读我的答案,我也会否决3年前的答案

最新答复:

如果有一个点击,点击动作本身应该有你需要的信息。在这里的核心部分,您将需要UITouch事件本身,例如根据文本的位置计算触摸发生的位置。这将让您知道用户的手指覆盖了文本的哪一部分

老实说,我不确定是否存在任何第三方解决方案,但我敢打赌,从关键字UITextView tap开始,如果不是从关键字cocoapod UITextView开始,这将是一个好地方

如果我使用中描述的属性实现这样一个解决方案,并且手头有UITouch事件,我会使用视图或窗口中触摸的位置 由全班给出

一方面,通过操纵CGPoints from:,您可以使用字符串机制来确定给定字体中文本的大小

虽然解决方案针对UILabel,但它可以:

a可以以不同的方式使用,但希望在UITextView中非常类似

b我见过一个虚拟UILabel被简单地用于计算需要这种精度的特征中的文本大小。这通常非常有效,因为更改UILabel的字符串并不昂贵,并且UILabel内置了基于文本和字体的大小计算属性,而无需进行布局传递


再次道歉,如果第一个原始答案看起来很无礼,我现在看到的确实是这样。不过,我将确认,如果所需的解决方案是长时间按下,我的原始答案仍然支持selectedRange机制。但是,对于基于单个触碰事件的自定义解决方案,通过代理回调收集UITouch事件,然后在知道存在哪个字符串的情况下处理这些事件,这是我所知道的最佳方法。

我们不会从单个触碰中获得所选范围。我需要一次点击的范围,而不是通过双击从textview中选择文本。你说的一次点击的范围是什么意思?范围从哪里到哪里,如果它只被点击一次的话?给任何被否决的人,谢谢。看起来你只是不喜欢某样东西,但这实际上促使我仔细阅读并重新检查我的答案,最终让我通过更详细的演练更新我的答案。对于正在观看的任何人,我希望答案有帮助,请评论我仍然可以添加的任何澄清!: