我有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)之前,我需要做什么才能使滚动发生?
答案 0 :(得分:0)
似乎你正在尝试做一些与我尝试here非常相似的事情,尽管你使用scrollRangeToVisible来进行滚动而不是使用contentOffset。
尽管如此,在您向其添加文本后TextView自动滚动的问题的潜在解决方案是在更新TextView时禁用setScrollEnabled。你已经试过了吗?
[_pastedText setScrollEnabled:NO];
_pastedText.attributedText = [[NSAttributedString alloc] initWithString:textToAdd attributes:attribute];
[_pastedText setScrollEnabled:YES];