Cocoa: Key down event on NSView not firing

Go To StackoverFlow.com

17

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?

2012-04-05 01:06
by mtmurdock


29

You need to override -acceptsFirstResponder to return YES.

2012-04-05 01:28
by Ken Thomases
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 2012-10-03 06: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 2012-10-04 23:07


8

In Swift:

class MDView: NSView {
    override var acceptsFirstResponder: Bool { return true }
}
2015-07-19 23:00
by Matt Darby
Ads