gpt4 book ai didi

ios - UITextView 行数包括空行吗?

转载 作者:行者123 更新时间:2023-11-29 03:18:56 34 4
gpt4 key购买 nike

我正在使用以下方法:

- (void)textViewDidChange:(UITextView *)textView {
int numLines = self.textInputView.contentSize.height/self.textInputView.font.lineHeight;
NSLog(@"number of lines is %i", numLines);
}

除少数边缘情况外,这大部分会正确返回行数。

问题是,当我按下键盘上的“Return”键时,textView 中开始了一个新的空白行,但行数没有考虑到这一点。在您键入第一个字符后,它将被计算在内。退格时它也不会给出正确的计数,直到您在上一行删除或添加单个字符。

有没有办法准确获取行数?谢谢

最佳答案

这不是获取行数的稳定方法。字体的“lineHeight”并不总是 textView 将用作其行高的值。

相反,获取UITextView的 layoutManager,并使用以下方法逐步执行layoutManager中的文本运行:

- (CGRect)lineFragmentRectForGlyphAtIndex:(NSUInteger)glyphIndex effectiveRange:(NSRangePointer)effectiveGlyphRange;

如果您在循环中调用该方法,在 glyphIndex 0 处声明,并且每次将前一个 effectiveGlyphRange 的末尾作为新的 glyphIndex 传递,您将获得所有已布局文本的矩形,一个在其他。您不想只计算有多少行,因为每行可能有多个行,但您可以从该信息中拼凑出有多少行。

我知道应该有更简单的方法。也许有,但我从未学过!

关于ios - UITextView 行数包括空行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21359497/

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