Pregunta

Yo uso CoreData para una aplicación de Mac que se ejecuta bajo 10.5 y superior. El contenido de un (atributo de texto) entidad se mostrará en una NSTextView mediante consolidaciones. El usuario puede editar el texto allí.

Cuando intento para salvar el contexto de objeto gestionado, el cursor del ratón desaparece de la vista de texto y la vista de texto se desplaza hasta la parte superior.

¿Cómo puedo prevenir CoreData / unión a hacer esto porque es molesto para el usuario pierda el foco!

Editar: añade la solución como una respuesta por separado para marcar la pregunta como completada

¿Fue útil?

Solución 2

Me acaba de encontrar una solución para este problema. Antes de guardar el contexto de objeto gestionado ahorro el "estado" de la vista de texto (rango y posición de desplazamiento seleccionado)

NSRange selectedRange   = [self.textView selectedRange];
NSScrollView* scrollView    = [self.textView enclosingScrollView];

// get the current scroll position of the document view
NSPoint scrollPosition = [[scrollView contentView] bounds].origin;

después de guardar mis entidades que restaurar el rango seleccionado y la posición de desplazamiento

[self.textView setSelectedRange:selectedRange];

// restore the scroll location      
[[scrollView contentView] scrollToPoint: scrollPosition];
[scrollView reflectScrolledClipView: [scrollView contentView]];

he encontrado 2 solución posible ajustar la posición de desplazamiento de una vista de desplazamiento

Otros consejos

Tome un vistazo a commitEditing antes de guardar. Esto hace que el TextView a perder el foco o incluso revertir todos los cambios en el campo de texto actual. Creo que no se puede evitar este comportamiento. Se podría restaurar la posición del cursor de selección y después de guardar. Yo también estaría interesado en una solución real a este problema.

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