Pregunta

Tengo un NSTextView con una cantidad considerable de texto.Sin embargo, cada vez que me desplazo, la vista no se actualiza correctamente.Hay algunos artefactos que permanecen en la parte superior o inferior de la vista.Parece que la vista no se actualiza con la suficiente frecuencia.Sin embargo, si me desplazo muy lentamente, la vista se actualiza correctamente.Si agrego un borde a la vista todo funciona perfectamente, la vista sin bordes es la que tiene un problema.Aquí hay un enlace a una captura de pantalla:

Gracias

¿Fue útil?

Solución

¿Has configurado el setDrawsBackground y copiesOnScroll propiedades para el NSScrollView o el NSClipView?

Lo primero que sugeriría es desactivar la propiedad "fondo de dibujo" del NSScrollView:

[myScrollView setDrawsBackground:NO];

Tenga en cuenta que esto debe configurarse en el NSScrollView, y no en el incrustado NSClipView.

El siguiente extracto del documentación puede ser relevante:

Si tu NSScrollView encierra un NSClipView enviando un setDrawsBackground: mensaje con un parámetro de NO hacia NSScrollView tiene el efecto añadido de enviar el NSClipView a setCopiesOnScroll: mensaje con un parámetro de NO.El efecto secundario de enviar el setDrawsBackground: mensaje directamente al NSClipView en cambio, sería la aparición de “senderos” (vestigios de un dibujo anterior) en la vista del documento a medida que se desplaza.

Otros consejos

Parece que el campo de texto ni siquiera está en el área de desplazamiento ... ¿Estás seguro de que algo isnt la superposición de él?

I tenía un problema parecido - artefactos se desarrollan cuando la NSTextView está incrustado en otro ScrollView

(es decir, un NSTableView.).

De hecho, me di en el setdrawsbackground, y luego añadió un bonito color para hacerla desaparecer de nuevo.

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

Esto, en combinación con un evento scrollwheel me dejó usar el NSTextView en un NSTableView.

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

Yo tenía el mismo problema hace algún tiempo. No recuerdo cómo lo resolví.

Trate de colocar el NSTextView a otra vista si el supervista es una vista personalizada. Sólo para ver qué va a pasar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top