Tengo un NSTableView
basado en la vista. Cada vista en la tabla tiene un campo de texto personalizado.mouseDown: en un NSTextField personalizado dentro de un NSTableView
Me gustaría iniciar una acción cuando el usuario hace clic en el campo de texto (etiqueta) dentro de la vista de la tabla (imagine tener un hipervínculo con una acción personalizada en cada celda de la tabla).
He creado una subclase básica NSTextField
para capturar los eventos del mouse. Sin embargo, solo activan el segundo clic, no el primer clic.
Intenté usar un NSButton
y eso se dispara enseguida.
Aquí es el código de la etiqueta personalizada:
@implementation HyperlinkTextField
- (void)mouseDown:(NSEvent *)theEvent {
NSLog(@"link mouse down");
}
- (void)mouseUp:(NSEvent *)theEvent {
NSLog(@"link mouse up");
}
- (BOOL)acceptsFirstResponder {
return YES;
}
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent {
return YES;
}
@end
para reemplazar. Gracias, intentaré eso. Una pregunta: el primer clic funciona con un NSButton (la fila de la tabla no está seleccionada en ese caso). ¿Hay alguna forma de emular ese comportamiento? – Mark
Probablemente exista, pero no lo sé. Pensé que devolver YES para acceptsFirstMouse y/o acceptFirstResponder lo hubiera hecho. – rdelmar
Si quiere el comportamiento que obtiene con un botón, ¿por qué no simplemente usa un botón? Puede desactivar el borde, y se verá como una etiqueta sin bordes de todos modos. Si desea un borde, puede insertar un botón sin bordes en un NSBox. – rdelmar