2012-04-05 10 views
14

Zrobiłem niestandardowy NSView i wdrożyłem metodę keyDown:. Jednak po naciśnięciu klawiszy metoda nigdy nie jest wywoływana. Czy muszę się zarejestrować, aby otrzymywać te wydarzenia? fyi, tworzę aplikację opartą na dokumencie i mogę obsługiwać ten kod w dowolnym miejscu (nie musi być w tym widoku). Jakie jest najlepsze miejsce do zrobienia tego w aplikacji opartej na dokumencie, aby zdarzenie miało miejsce w całej aplikacji?Kakao: Zdarzenie kluczowe w NSView nie wypalanie

Odpowiedz

27

Musisz zastąpić -acceptsFirstResponder, aby zwrócić YES.

+0

mam ten sam problem co w Asker (custom NSView w aplikacji opartych na dokument), i po prostu overrided acceptsFirstResponder ale keyDown nie jest jeszcze uruchomiony. Jeśli masz jakąkolwiek inną radę, jaka mogłaby być, byłbym ci wdzięczny na wieki! – chm

+1

Czy masz powody, aby sądzić, że Twój widok jest pierwszym respondentem okna? Możesz ustawić 'initialFirstResponder' w kodzie, zanim okno zostanie uporządkowane na ekranie lub połączyć je w IB. Innym razem możesz użyć '-makeFirstResponder:'. Upewnij się też, że twoje okno może stać się kluczowe. –

7

w Swift:

class MDView: NSView { 
    override var acceptsFirstResponder: Bool { return true } 
} 
Powiązane problemy