Take the 2-minute tour ×

I have made a custom NSView and have implemented the keyDown: method. However, when I press keys the method is never called. Do I have to register to receive those events? fyi, I am making a document based application and can handle this code anywhere (doesn't have to be in this view). What is the best place to do this in a document based application such that the event will occur throughout the entire application?

share|improve this question

1 Answer 1

up vote 12 down vote accepted

You need to override -acceptsFirstResponder to return YES.

share|improve this answer
I have the same problem as the asker (custom NSView in a document-based application), and just overrided acceptsFirstResponder but keyDown is still not triggered. If you have any other advice as to what it could be I would be eternally grateful! –  chm Oct 3 '12 at 6:40
Do you have reason to believe that your view is the window's first responder? You can set the initialFirstResponder in code before the window is ordered on screen or connect it in IB. At other times, you can use -makeFirstResponder:. Also, make sure your window can become key. –  Ken Thomases Oct 4 '12 at 23:07

Your Answer


