el control de cambios NSTextView lidiar con el parpadeo y mejorar la velocidad
-
26-09-2019 - |
Pregunta
Tengo un NSTextView subclase que estoy manipulando en un hilo separado (usando performSelectorOnMainThread: withObject: waitUntilDone :) utilizando selectores replaceCharactersInRange: withString :, setSelectedRange :, y insertText :. Estoy experimentando parpadeo de texto, y el bajo rendimiento como el NSTextView actualiza la pantalla para cada operación.
¿Alguna sugerencia sobre cómo controlar cuándo se actualiza la pantalla, por lo que puede actualizar sólo cuando realmente se necesita? He intentado utilizar varias combinaciones setNeedsDisplay:. No (tanto de los principales hilos y de fondo, antes y después de mis actualizaciones), que parece ser ignorado
Gracias de antemano a cualquier persona que pueda proporcionar alguna información.
Solución
Creo que debería estar manipulando el subyacente NSTextStorage
para la vista de texto, en lugar de invocar métodos de evento-relacionados de la vista directa. Este es un ejemplo bastante clásico de la arquitectura Modelo-Vista-Controlador: el NSTextView
es la vista y la NSTextStorage
es el modelo. Siempre que sea posible, se quiere manipular directamente el modelo y dejar que las capas controlador / Ver oferta con la actualización de la vista si lo consideran conveniente.