2011-04-04 16 views
5

Estoy creando un editor de imágenes (solo un editor simple para un programa que estoy creando), y necesito encontrar la posición del mouse. ¿Es posible hacer esto en Objective-C? ¿Si es así, cómo?Cómo encontrar la ubicación del mouse en Objectivo-c

EDIT: Pensé que debería mencionar que hice algunas investigaciones al respecto y no encontré nada que funcione. El código que tengo en mi archivo de encabezado es el siguiente:

#import <Cocoa/Cocoa.h> 


@interface test : NSWindow <NSWindowDelegate> { 

} 

@end 

Puedo manejar cualquier tomacorrientes y acciones que sean necesarias; Solo necesito saber cómo encontrar la posición del mouse.

Respuesta

5

Si se captura a través de un evento, como mouseDown, que se verá así:

- (void)mouseDown:(NSEvent *)theEvent { 
    NSPoint mouseDownPos = [theEvent locationInWindow]; 
} 

De lo contrario, utilice:

[NSEvent mouseLocation]; 

EDIT: (Lo siento, escribió NSPoint *, que es incorrecto, ya que es una estructura)

+0

El depurador sigue diciendo "Tipos incompatibles en la inicialización", o "Tipos incompatibles en la asignación" si se separan las líneas (por lo que inicializar, luego establecer, en lugar de configuración durante la inicialización). – Justin

+0

Vaya, accidentalmente puse NSPoint *. Inténtalo de nuevo con el código actualizado. –

+0

Ahora dice "Inicializador inválido". Esto es un poco confuso EDITAR: Funciona ahora (de alguna manera), pero cuando hago clic en el mouse, muestra (gbd) en azul y la aplicación deja de funcionar. – Justin

5

Dentro de un controlador de eventos de ratón (mouseDown:, mouseUp:, mouseMoved:, etc.), puede solicitar el evento por su locationInWindow. Si necesita la ubicación del mouse en algún momento arbitrario (generalmente no querrá hacer eso, ya que es raro que un programa tenga una necesidad única de descubrir la ubicación del mouse), puede hacer [NSEvent mouseLocation] y devolverá el la ubicación del mouse en ese momento en las coordenadas de la pantalla.

2

Si quiere las coordenadas desde el origen de la vista, use:

NSPoint locationInView = [self convertPoint:[theEvent locationInWindow] fromView:nil]; 

Puede utilizar este NSPoint directamente para dibujar las coordenadas NSView; de otro modo con

[theEvent locationInWindow] 

tendrá las coordenadas del ratón en la ventana, lo que probablemente no es lo que desea.

+0

Gracias esto ayudó mucho. Aquí está la sintaxis de Swift 3 para cualquiera que necesite eso: 'let locationInView = self.convert (event.locationInWindow, from: nil)' –

Cuestiones relacionadas