12
Я пытаюсь реализовать плавную прокрутку в просмотре истории чата, который я реализовал, однако, если содержимое, которое я добавляю, достаточно велико, гладкий свиток будет прокручивать только несколько строк.NSTextView, добавляющий текст и плавная прокрутка
Мое первое предположение заключалось в том, что вид еще не перерисовывал себя. Не тот случай, даже когда принудительный немедленный рисование с -разложением все равно прерывается.
- (void)scrollAnimated:(BOOL)animated
{
if(animated)
{
NSClipView *clipView = [[_chatHistoryView enclosingScrollView] contentView];
[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:0.100f];
NSPoint constrainedPoint = [clipView constrainScrollPoint:NSMakePoint(0, CGFLOAT_MAX)];
[[clipView animator] setBoundsOrigin:constrainedPoint];
[NSAnimationContext endGrouping];
}
else
{
NSRange range;
range.location = [[_chatHistoryView textStorage] length];
range.length = 1;
[_chatHistoryView scrollRangeToVisible:range];
}
}
Что я делаю неправильно?
Я уверен, что это не решит проблему, но в неанимированной коде вашего диапазон будет вне границ как это закончится на длину + 1. – mattmook
Некоторое время, используя этот код, мне, вероятно, пришлось бы посмотреть в документах, почему (местоположение + 1) последнего символа (поскольку длина (местоположение + 1), я думаю) принимается. –