我有UITextView
一些文字内容。我需要从tapped位置获取字符/字符串的确切范围值。我为UITextView设置了TapGestureRecognizer
。在其动作方法中,我需要获取拍摄位置的范围。怎么可能?我测试了Stackoverflow的一些答案,但它们并不完美。提前谢谢。
答案 0 :(得分:-1)
您是否看过UITextView
文档?
您可以使用此selectedRange
方法确定用户选择的文本范围。
后期编辑:这是最近才投票,让我有机会重新阅读我的答案,我也从3年前开始回答我的答案。
更新回答:
如果只有一次点击,则点按操作本身应该包含您需要的信息。在这里的核心,您自己需要UITouch事件,例如计算触摸发生在哪里与文本的位置有关。这将让您知道用户手指覆盖的文本部分。
我真的不确定是否存在任何第三方解决方案,但我敢打赌cocoapods.org是一个以关键字UITextView tap
开头的好地方,如果不是{ {3}}本身包含关键字:cocoapod uitextview
。
如果我正在实施这样的解决方案,手头有UITouch事件,使用Github中描述的属性我会使用类提供的The location of the touch within the view or window
。
通过从docs单手操作CGPoints
,您可以使用String机制来确定给定字体中文本的大小。
虽然https://developer.apple.com/documentation/uikit/uitouch/1618116-location解决方案适用于UILabel
,但它可以:
(a)以不同的方式使用,但希望在UITextView
中非常相似OR
(b)我看到一个虚拟UILabel
仅用于计算需要这种精度的特征中的文本大小。这通常非常有效,因为更改UILabel
的字符串并不昂贵,UILabel
内置了基于文本和字体的大小计算属性,而无需进行布局传递。
再次道歉,如果第一个原始答案看起来很苛刻,那么它确实会以我现在看到的方式出现。不过,我会证实,我的原始答案仍然存在(selectedRange
机制)应该是长期压缩所需的解决方案。但是,对于基于单个触摸事件的自定义解决方案,通过委托回调收集UITouch
事件,然后处理那些知道String
存在的事件是我能说的最佳方法。