NSTextView não atualizados corretamente em rolagem
-
21-08-2019 - |
Pergunta
Eu tenho um NSTextView com uma quantidade considerável de texto. Sempre que eu rolar no entanto, a vista não é atualizado corretamente. Há alguns artefatos que permanecem na parte superior ou na parte inferior da vista. Parece que a visão não refrescar-se com bastante frequência. Se eu rolar muito lentamente as atualizações vista corretamente embora. Se eu adicionar uma borda à vista tudo funciona perfeitamente, vista sem fronteiras é a única que tem um problema. Aqui está um link para uma imagem:
Graças
Solução
Você definir as propertes setDrawsBackground
e copiesOnScroll
tanto para o NSScrollView
ou o NSClipView
?
A primeira coisa que eu sugiro é desligar o "desenha o fundo" propriedade do NSScrollView
:
[myScrollView setDrawsBackground:NO];
Note que este deve ser definido no NSScrollView
, e não na NSClipView
incorporado.
O seguinte trecho do documentação pode ser relevante:
Se o seu
NSScrollView
encerra umaNSClipView
enviando uma mensagemsetDrawsBackground:
com um parâmetro deNO
aoNSScrollView
tem o efeito adicional de enviar oNSClipView
uma mensagemsetCopiesOnScroll:
com um parâmetro deNO
. O efeito colateral de enviar a mensagemsetDrawsBackground:
diretamente aoNSClipView
vez seria o aparecimento de “trilhas” (vestígios de desenho anterior) na exibição do documento, uma vez que é rolada.
Outras dicas
Looks como campo de texto não é nem mesmo em área de rolagem a ... Tem certeza is not algo sobrepondo-lo?
Eu tive um problema semelhante -. Artefatos desenvolver quando a NSTextView está incorporado em outro scrollview (. Ou seja, um NSTableView)
Na verdade, eu virei em o setdrawsbackground, e depois acrescentou uma cor agradável para fazê-la desaparecer novamente.
-(void)awakeFromNib{
NSScrollView *scroll = [self enclosingScrollView];
[scroll setBorderType:NSNoBorder];
[scroll setDrawsBackground:YES];
[scroll setBackgroundColor:[NSColor windowBackgroundColor]];
}
Este em combinação com um evento scrollwheel deixe-me usar o NSTextView em um NSTableView.
-(void)scrollWheel:(NSEvent *)theEvent{
NSScrollView *scroll = [self enclosingScrollView];
[[scroll superview] scrollWheel:theEvent];
}
Eu tive o mesmo problema há algum tempo. Eu não me lembro como eu resolver isso.
Tente colocar o NSTextView para outra vista, se o superview é uma exibição personalizada. Só para ver o que vai acontecer.