Pregunta Cómo detectar NSWindow Maximize o Zoom Event?


¿Cómo se detecta cuando un usuario hace clic en el botón verde de maximizar o hacer zoom (+) en NSWindow sin usar el NSWindowDidResizeNotification?

La razón por la que no quiero usar NSWindowDidResizeNotification es porque también se dispara repetidamente a medida que el usuario hace clic y arrastra para cambiar manualmente el tamaño de la ventana. Tengo un código que deseo ejecutar y solo debe iniciarse una vez cuando el usuario zooms o de-zooms la ventana usando el botón verde en la esquina superior izquierda y no muchas veces al cambiar manualmente el tamaño de la ventana.


5
2017-08-21 00:51


origen


Respuestas:


Estos dos métodos de delegación de ventana pueden ser útiles:

- windowWillUseStandardFrame:defaultFrame:
- windowShouldZoom:toFrame:

También podría considerar subclasificar NSWindow y anular el zoom: método.


10
2017-08-21 01:44



@EagleOfToledo, según su pregunta y sus comentarios sobre la respuesta de Todd Yandell, creo que solo necesita este método de delegado:

Rápido

optional func windowDidEndLiveResize(_ notification: NSNotification)

C objetivo

- (void)windowDidEndLiveResize:(NSNotification *)notification

Este método solo se invocará una vez, sin importar que haga clic en el botón de zoom o cambie el tamaño manualmente.


0
2018-01-16 02:00