You make a custom view, add it to your window in Interface Builder, and you make it the first responder. When you run the program, your custom view is not the first responder, instead some lame-O textfield has snagged keyboard focus. To address this, override this undocumented method:- (BOOL) _hasEditableCell { return (YES); } // _hasEditableCellThis workaround is necessary at least for Mac OS X 10.1.*.