2012-07-13 13 views
9

Mam dwa NSView jeden na drugim. Jeden NSView przedstawia tabelę z wierszami. Po kliknięciu rzędu inny widok jest wyświetlany na górze tego widoku.Jak wyłączyć Kliknięcie do NSView za innym NSView

Problem polega na tym, że klikam obszar w drugim widoku, w którym znajduje się rząd pod spodem NSView, a następnie kliknięcie. Jak mogę to zatrzymać?

Dzięki

Odpowiedz

-8

Można włączyć dotykowych i myszy wydarzeń w widoku z góry, gdy jest przedstawiane:

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

Edit: komentarz jest prawdą, że acceptsFirstMouse nie jest własnością i musi być zaktualizowany w podklasie.

+0

Po prostu próbowałem i to nie zadziałało. Nie mogłem znaleźć właściwości acceptsFirstMouse w NSView. – Leo

+2

@PeterDeWeese, wydaje się, że musisz podklasy i zwracać TAK w 'acceptsFirstMouse', ponieważ nie jest właściwość NSView. – CodaFi

+0

Nie mam pojęcia o tych facetach, ale rozwiązałem mój problem, zmieniając projekt. Dzięki – Leo

0

Podklasa i narzędzie acceptsFirstMouse w widoku, zwracając YES. Ponadto ustaw w tym widoku wartość acceptsTouchEvents do YES.

+0

nie działa dla mnie – zic10

3

W widoku najwyższego poziomu implementuj w tym widoku mouseDown: i nie wywołuj opcji nextResponder ani nie wykonuj żadnych czynności.

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

Mam dokładnie taki sam scenariusz jak PO i działa to dla mnie zgodnie z przeznaczeniem. Podziękowania dla odpowiedzi, którą znalazłem here, która doprowadziła mnie do tego.

Powiązane problemy