2012-07-13 17 views
9

Tengo dos NSView uno encima del otro. Un NSView presenta una tabla con filas. Al hacer clic en una fila, se muestra otra vista en la parte superior de esa vista.Cómo deshabilitar Haga clic en un NSView detrás de otro NSView

Ahora el problema es cuando hago clic en un área en la segunda vista donde hay una fila debajo de NSView y luego se hace clic. ¿Cómo puedo detener eso?

Gracias

Respuesta

-8

Puede activar eventos de toque y el ratón en la vista superior cuando se presenta:

topView.acceptsTouchEvents = YES; 
topView.acceptsFirstMouse = YES; 

Editar: el comentario es correcto que acceptsFirstMouse no es una propiedad, y debe ser actualizado en una subclase.

+0

Lo probé y no funcionó. No pude encontrar la propiedad acceptFirstMouse en NSView. – Leo

+2

@PeterDeWeese, parece que tiene que subclasificar y devolver SÍ en 'acceptsFirstMouse' porque no es propiedad de NSView. – CodaFi

+0

No tengo idea acerca de estos tipos, pero resolví mi problema cambiando el diseño. Gracias – Leo

0

Subclase e implemente acceptsFirstMouse en la vista, que devuelve YES. Además, establezca acceptsTouchEvents en YES en esa vista.

+0

no funciona para mí – zic10

3

En su vista de nivel superior, implemente mouseDown: en esa vista y no llame a nextResponder ni haga nada en él.

- (void)mouseDown:(NSEvent *)theEvent{ 
    //Do nothing to not propagate the click event to descendant views 
} 

Tengo exactamente el mismo escenario que el OP y esto funciona para mí como estaba previsto. Gracias a la respuesta que encontré here que me llevó a esto.

Cuestiones relacionadas