gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 17:53:04 30 4
gpt4 key购买 nike

我有一个包含一些文本内容的 UITextView。我需要从点击的位置获取字符/字符串的确切范围值。我为 UITextView 设置了 TapGestureRecognizer。在其操作方法中,我需要获取点击位置的范围。怎么可能?我用 Stackoverflow 的一些答案进行了测试,但它们并不完美。提前致谢。

最佳答案

你看过UITextView文档了吗?

https://developer.apple.com/library/ios/documentation/uikit/reference/uitextview_class/Reference/UITextView.html#//apple_ref/occ/instp/UITextView/selectedRange

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

后期编辑:这只是最近才被否决,让我有机会重新阅读我的答案,我也会否决我 3 年前的答案。

更新后的答案:

如果有一次点击,点击 Action 本身应该有你需要的信息。这里的核心是,您将需要 UITouch 事件本身,例如计算触摸发生的位置与您的文本应该位于的位置之间的关系。这会让您知道用户的手指覆盖了文本的哪一部分。

老实说,我不确定是否存在任何第 3 方解决方案,但我敢打赌 cocoapods.org如果不是 Github,将是从关键字 UITextView tap 开始的好地方本身带有关键字:cocoapod uitextview

如果我正在实现这样的解决方案,手头有 UITouch 事件,使用 docs 中描述的属性我会使用 触摸在 View 或窗口中的位置
类给出的。

通过一方面操作 CGPoints from: https://developer.apple.com/documentation/uikit/uitouch/1618116-location ,然后您可以使用字符串机制来确定给定字体中文本的大小。

同时 this解决方案是针对 UILabel,它可以:

(a) 以不同的方式使用,但希望在 UITextView 中非常相似

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

再次,如果第一个原始答案看起来很时髦,我深表歉意,我现在看到的确实是这样。不过,我会确认我原来的答案仍然有效(selectedRange 机制)应该是长按所需的解决方案。但是,对于基于单个触摸事件的自定义解决方案,最好的方法是通过委托(delegate)回调收集 UITouch 事件,然后在知道 String 存在的情况下处理这些事件据我所知。

关于ios - 如何从点击位置获取 UITextView 中文本的范围值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25321406/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com