2011-07-27 7 views
6

He habilitados versiones y copia de seguridad automática en mi aplicación basada documento por lo que ahora puedo ver la versión del navegador (la interfaz de máquina del tiempo similar) para cada uno de mis documentos en OSX 10,7versiones en OSX 10.7

+ (BOOL)autosavesInPlace{ return YES; } 

Tengo una vista textual y como se sugirió en uno de los videos de WWDC, sesión 107, quiero deshabilitar la entrada de texto, etc. al ingresar al navegador de versiones. Así que implementan métodos NSWindowDelegate:

- (void)windowWillEnterVersionBrowser:(NSNotification *)notification{ 
    [myTextView setEditable:NO]; 
} 
- (void)windowWillExitVersionBrowser:(NSNotification *)notification{ 
    [myTextView setEditable:YES]; 
} 

Ahora, myTextView en el documento (el documento actual) de la ventana de la parte izquierda de la pantalla está desactivada, pero los documentos en el lado derecho (las versiones vuelos pasan) todavía muestran la cursor.

El textView no se puede editar, pero se muestra el cursor. También estoy desactivando otras cosas y volviéndolas a habilitar en los métodos anteriores, pero escribir código en los métodos anteriores parece afectar solo a la ventana/documento del documento actual, no a las versiones anteriores de Windows/documento.

¿Tal vez alguien más está teniendo el mismo problema? ¿Cómo puedo hacer que esto funcione correctamente? :)

EDITAR:

que estaba buscando WWDC código de ejemplo de la sesión 107, pero la carpeta está vacía. ¿Me perdí algo o no hay un código de muestra para esta sesión?

Edit2:

Aplicación Kit Nota de la versión (León) dice que windowForSheet se llama al crear las ventanas de la parte derecha de la versión del navegador:

- (NSWindow *)windowForSheet{ 
    CustomWindow *win = (CustomWindow *)[super windowForSheet]; 
    [win setUserInteractionEnabled:![self isInViewingMode]]; //disable stuff here 
    return win; 
} 

Pero ahora, cuando la ventana se va desde la versión Navegador, la interacción del usuario aún está desactivada. :(

+0

Si el texto en vista de texto de la versión antigua no es editable, ¿realmente importa Sólo tiene que acceder un error con Apple? –

+0

Sé que no cambiará la funcionalidad en absoluto, pero se ve muy feo. Además, es extraño que otras aplicaciones como textedit funcionen bien. Probablemente, ¿hay algo relacionado con la restauración de ventanas? – nacho4d

+0

¿Ha mirado el código fuente de TextEdit (archivo: /// Desarrollador/Ejemplos/TextEdit) para ver cómo maneja esta situación? –

Respuesta

5

Finalmente encontré la respuesta:

NSWindowDelegate métodos son llamados por la ventana del documento actual (documento en el lado izquierdo de la versión del navegador) y las otras ventanas se pueden coordinar anulando -[NSDocument windowForSheet]; o incluso mejor . escribiendo algo similar en el interior -[NSDocument windowControllerDidLoadNib:];

he publicado un corto tutorial/notas aquí: Versions in OSX 10.7

Cuestiones relacionadas