[英]Scroll UITextView to Show New Text Added Programatically
我有一个UITextView
,我只能以编程方式向其中添加文本。 例如,粘贴粘贴板上的文本。 所以我有以下几点:
UITextView* _pastedText;
_pastedText = [[UITextView alloc] initWithFrame:pastedTextFrame];
_pastedText.editable = NO;
_pastedText.selectable = NO;
当我(以编程方式)添加新文本时,文本视图将滚动到顶部(无动画)。 我不会触发此滚动; 我认为这是默认行为?
如何使文本视图滚动,以便可以看到新的视图?
附加信息
我在这里看到了许多相关的问题/答案。 我发布了这个问题,因为使用以下代码,我看到了不良行为。 这是我正在使用的代码:
- (void)addText:(NSString*)text
{
NSString* textToAdd = text;
BOOL previouslyHadText = _pastedText.text.length > 0;
if (previouslyHadText) {
textToAdd = [NSString stringWithFormat:@"%@\n%@", _pastedText.text, text];
}
NSMutableParagraphStyle* paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineSpacing = _lineSpacing;
NSDictionary *attribute = @{ NSParagraphStyleAttributeName : paragraphStyle,
NSFontAttributeName : [UIFont systemFontOfSize:18.0] };
_pastedText.attributedText = [[NSAttributedString alloc] initWithString:textToAdd attributes:attribute];
if (previouslyHadText) {
NSRange range = NSMakeRange(_pastedText.text.length - 1, 1);
[_pastedText scrollRangeToVisible:range];
}
}
我在此方面取得了一些成功,但看到以下错误/问题:
方案1:
方案2:
我如何(需要?)禁用隐式滚动(方案1)?
我需要怎么做才能在手动滚动视图之前进行滚动(场景2)?
似乎您正在尝试执行与我在此处尝试执行的操作非常相似的操作,尽管您正在使用scrollRangeToVisible进行滚动而不是使用contentOffset。
但是,向您添加文本后自动滚动TextView的潜在问题解决方案是在更新TextView时禁用setScrollEnabled。 你已经尝试过了吗?
[_pastedText setScrollEnabled:NO];
_pastedText.attributedText = [[NSAttributedString alloc] initWithString:textToAdd attributes:attribute];
[_pastedText setScrollEnabled:YES];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.