Soy nuevo en la programación de Mac y deseo disparar eventos cuando el cursor entra o sale de la ventana principal. Leí algo sobre NSTrackingArea, pero no entiendo exactamente qué hacer.Cómo usar NSTrackingArea
Respuesta
Apple proporciona documentación y ejemplos para NSTrackingAreas.
La manera más fácil de rastrear cuando un mouse entra o existe una ventana es configurando un área de rastreo en contentView de la ventana. Sin embargo, esto no hará un seguimiento de la barra de herramientas de la ventana
Así como un rápido ejemplo, en el código de la vista de contenido personalizado:
- (void) viewWillMoveToWindow:(NSWindow *)newWindow {
// Setup a new tracking area when the view is added to the window.
NSTrackingArea* trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds] options: (NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways) owner:self userInfo:nil];
[self addTrackingArea:trackingArea];
}
- (void) mouseEntered:(NSEvent*)theEvent {
// Mouse entered tracking area.
}
- (void) mouseExited:(NSEvent*)theEvent {
// Mouse exited tracking area.
}
También debe poner en práctica de NSView updateTrackingAreas método y probar área de seguimiento del evento para asegurarse es el correcto.
La respuesta por Matt Bierner realmente me ayudó; necesidad de implementar el método -viewWillMoveToWindow:
.
Me gustaría también añadir que también tendrá que poner en práctica esta opción si desea manejar las áreas de seguimiento cuando la vista se cambia el tamaño:
- (void)updateTrackingAreas
{
// remove out-of-date tracking areas and add recomputed ones..
}
en la sub-clase personalizada, para manejar la geometría cambiante de la vista; esto se invocará automáticamente.
- 1. NSWindow registrar eventos del mouse (utilizando NSTrackingArea) incluso si la aplicación no está enfocada?
- 2. Cómo usar org.netbeans.swing.outline?
- 3. Android: cómo usar CursorAdapter?
- 4. ¿Cómo usar MySQL DECIMAL?
- 5. ¿Cómo usar RowStatus?
- 6. Android: cómo usar SectionIndexer
- 7. MySQL: cómo usar COALESCE
- 8. ¿Cómo usar Android ViewSwitcher?
- 9. cómo usar json_encode
- 10. Cómo usar boost :: crc?
- 11. Delphi Cómo usar TGridPanel
- 12. Cómo usar un WSDL
- 13. Cómo usar sprof?
- 14. Android cómo usar Environment.getExternalStorageDirectory()
- 15. Cómo usar Deblector?
- 16. Cómo usar los símbolos + =, * =, - =
- 17. ¿Cómo usar ConcurrentLinkedQueue?
- 18. Cómo usar GtkTreeView correctamente
- 19. Cómo usar NSCache
- 20. cómo usar finalmente
- 21. Cómo usar TextAction
- 22. Cómo usar kCTSuperscriptAttributeName?
- 23. ¿Cómo usar cepstral?
- 24. ¿Cómo usar MigLayout?
- 25. ¿Cómo usar Android ViewPager?
- 26. Java: Cómo usar Thread.join
- 27. Cómo usar std :: ref?
- 28. cómo usar ffmpeg
- 29. cómo usar sizzle.js separada
- 30. Cómo usar java.Set
Bien, esta será una pregunta novato, pero ¿dónde tengo que colocar el código? ¿Dónde puedo encontrar el código de la vista personalizada? ¿Debo conectar un objeto a la vista en Interface Builder como lo hago cuando uso puntos de venta y acciones? – icant
Este código debe colocarse en una subclase UIView personalizada. Luego, la UIView personalizada debe agregarse como la vista de contenido de la ventana. Usando Interface Builder, cree o seleccione una vista de contenido para la ventana y especifique su clase, usando el panel de inspectores de Interface Builder, para ser la clase de su UIView personalizada. –
Gracias, hombre, funciona! – icant