我有一个UITextView
,其中包含一些超出其范围的文本。因此,启用了垂直滚动。
现在,我想找到第一个可见字符的位置。这是我尝试过的:
let firstCharacterPosition = characterRange(at: contentOffset)?.start
这在大多数情况下都有效。但是,当我向上滚动并接近文本的开头时,characterRange(at:)
函数突然返回nil
。
一开始我以为只是因为跳动(当contentOffset.y
值很快变成<0时)。但这不是(唯一的)原因。
我尝试了其他一些值,但惊讶地发现了
characterRange(at: .zero)
也返回nil
–正值y
较低的文本位置。
为什么?
如何为第一个可见字符获得可靠的UITextPosition
?
答案 0 :(得分:1)
请尝试以下代码(如果在textView
子类中调用,请删除UITextView
:
let firstVisibleCharacterIndex = textView.layoutManager.characterIndex(for: textView.contentOffset, in: textView.textContainer, fractionOfDistanceBetweenInsertionPoints: nil)
答案 1 :(得分:0)
我认为这可以为您提供帮助。
select * from temp;
id | val
----+----------
1 | 1.234567