gpt4 book ai didi

ios - 限制 UITextView 中的行数

转载 作者:可可西里 更新时间:2023-11-01 05:04:38 32 4
gpt4 key购买 nike

我很清楚有人问过这个问题,但我找不到有效的答案。结合使用先前的解决方案,我想出了这段代码:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)string
{
int numLines = notesTextView.contentSize.height / notesTextView.font.lineHeight;
if (numLines <= 8)
{
return true;
}
return false;
}

这是行不通的,因为行数是在附加文本之前计算的,所以我们仍然选择了超​​出我们想要的行数,然后被困在上面,因为无法进一步编辑。

我也尝试过检测“\n”条目的解决方案,但这也不起作用,因为我们可以在不按回车键的情况下自然地到达新行。

最佳答案

我也遇到过这个问题。早期的解决方案都不适合我。这是我的解决方案,希望:(仅限 iOS 7+!)

- (void)textViewDidChange:(UITextView *)textView
{
NSLayoutManager *layoutManager = [textView layoutManager];
NSUInteger numberOfLines, index, numberOfGlyphs = [layoutManager numberOfGlyphs];
NSRange lineRange;
for (numberOfLines = 0, index = 0; index < numberOfGlyphs; numberOfLines++)
{
(void) [layoutManager lineFragmentRectForGlyphAtIndex:index
effectiveRange:&lineRange];
index = NSMaxRange(lineRange);
}

if (numberOfLines > 3)
{
// roll back
_labelField.text = _text;
}
else
{
// change accepted
_text = _labelField.text;
}
}

它使用 NSString ivar _text 来能够在文本更改后回滚。这不会导致任何闪烁。

numberOfLines 引用:https://developer.apple.com/library/mac/documentation/cocoa/conceptual/TextLayout/Tasks/CountLines.html#//apple_ref/doc/uid/20001810-CJBGBIBB

关于ios - 限制 UITextView 中的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17171847/

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