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

Foi útil?

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 uma NSClipView enviando uma mensagem setDrawsBackground: com um parâmetro de NO ao NSScrollView tem o efeito adicional de enviar o NSClipView uma mensagem setCopiesOnScroll: com um parâmetro de NO. O efeito colateral de enviar a mensagem setDrawsBackground: diretamente ao NSClipView 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top