NSTextView не обновляется должным образом при прокрутке

StackOverflow https://stackoverflow.com/questions/849655

Вопрос

У меня есть NSTextView с большим количеством текста.Однако всякий раз, когда я прокручиваю, представление не обновляется должным образом.Некоторые артефакты остаются вверху или внизу изображения.Похоже, что представление обновляется недостаточно часто.Если я прокручиваю очень медленно, представление обновляется правильно.Если я добавляю рамку к представлению, все работает отлично, а в представлении без полей возникает проблема.Вот ссылка на скриншот:

Спасибо

Это было полезно?

Решение

Вы установили setDrawsBackground и copiesOnScroll свойства для любого NSScrollView или NSClipView?

Первое, что я бы посоветовал, это отключить свойство «рисовать фон» NSScrollView:

[myScrollView setDrawsBackground:NO];

Обратите внимание, что это должно быть установлено на NSScrollView, и нет на встроенном NSClipView.

Следующий отрывок из документация может быть актуально:

Если ваш NSScrollView включает NSClipView отправка setDrawsBackground: сообщение с параметром NO к NSScrollView имеет дополнительный эффект отправки NSClipView а setCopiesOnScroll: сообщение с параметром NO.Побочный эффект от отправки setDrawsBackground: сообщение непосредственно в NSClipView вместо этого будет появление «следов» (остатков предыдущего рисунка) в представлении документа при его прокрутке.

Другие советы

Похоже, текстовое поле даже не находится в области прокрутки...Вы уверены, что что-то не перекрывается?

У меня была аналогичная проблема — артефакты возникают, когда NSTextView встроен в другое представление прокрутки (т.NSTableView).

я на самом деле повернулся на setdrawsbackground, а затем добавил красивый цвет, чтобы он снова исчез.

-(void)awakeFromNib{
    NSScrollView *scroll = [self enclosingScrollView];
    [scroll setBorderType:NSNoBorder];
    [scroll setDrawsBackground:YES];
    [scroll setBackgroundColor:[NSColor windowBackgroundColor]];
}

Это в сочетании с событием ScrollWheel позволило мне использовать NSTextView в NSTableView.

-(void)scrollWheel:(NSEvent *)theEvent{
    NSScrollView *scroll = [self enclosingScrollView];
   [[scroll superview] scrollWheel:theEvent];
}

У меня была такая же беда некоторое время назад.Я не помню, как я это решил.

Попробуйте поместить NSTextView в другое представление, если суперпредставление является пользовательским представлением.Просто чтобы посмотреть, что произойдет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top