2011-08-19 18 views
5

He estado buscando en los documentos de Apple y la única función que pude encontrar perteneciente a un doble clic acaba de devolver el tiempo aceptable entre clics para que se considere un doble clic.Recibiendo el evento de doble clic

¿Puede alguien mostrarme un ejemplo de un evento de doble clic?

+0

iOS o Mac OS X? – duskwuff

+1

@duskwuff OSX (ver etiquetas) – Sciguy77

+1

@duskwuff: Además, iOS no tiene clics. –

Respuesta

14

Anule el método NSResponder-mouseUp: y compruebe el evento clickCount del evento suministrado. Si clickCount == 2, está viendo un doble clic. Si es 1, entonces un solo clic. 0, luego esperaron lo suficiente entre el mouse y el mouse para que el sistema decidiera que no se trataba de un clic, solo eventos distintos de arriba abajo.

- (void)mouseUp:(NSEvent *)event 
{ 
    NSInteger clickCount = [event clickCount]; 
    if (2 == clickCount) [self handleDoubleClickEvent:event]; 
} 

Esto supone que el objeto que maneja el clic es parte de la cadena de respuesta. De lo contrario, tendrá que obtener sus eventos de otra manera, como la subclasificación de NSApplication o NSWindow y la anulación de -sendEvent: para interceptar el evento apropiado antes de que se continúe.

+5

Se debe enfatizar que "NSResponder" en esta respuesta se refiere a la clase en Cocoa (de la cual NSView, NSWindow y NSApplication heredan), no al otro que se nombró a sí mismo. –

2

Tenga en cuenta también que algunos NSControl tienen para que el selector registrado a través de setDoubleAction: se envíe al destino. Ver las documentaciones oficiales de

+0

El evento (objeto NSEvent) no se pasa al destino; se envía un mensaje de acción al objetivo, pero, como es habitual para un mensaje de acción, el único argumento es el control (vista de tabla o lo que sea) que envía el mensaje. Estoy seguro de que no se refería al objeto NSEvent, pero quería asegurarme de que fuera claro. –

+0

Sí, eso es lo que quise decir; Voy a reformularlo. Gracias. – Yuji

+0

En mi caso, tuve que establecer un objetivo para un NSTableView cuando se ejecutaba en un sistema operativo anterior a 10.10, pero 10.10 funcionaba bien sin que se estableciera el objetivo (yo en mi caso) – ghr

Cuestiones relacionadas