On Jun 15, 2011, at 08:56, Luc Van Bogaert wrote: > I'm not sure I understand how to accomplish this. What I have already tried, > is message the window with "makeFirstResponder:" passing my view controllers > as a parameter. This initially seemed to work fine; until I add an extra view > with some textfields to the content pane. Now, it appears that my validation > method does not get called anymore, leading me to the conclusion that somehow > my view controllers are no longer part of the responder chain. > > I used NSLog to find out the kind of object that is my window's "first > responder" and "next responder"; but the last method returns nil, which I > don't understand.
I think there's still a small confusion here. For each window, there's a tree structure of NSResponder objects with the window at the root and the views as intermediate and leaf nodes. The nodes of this tree are linked (uni-directionally) by the "nextResponder" property. A responder chain is something a bit more complicated. It's a traversal of a chain of objects beginning with a NSView, following the "nextResponder" links to the window, then continuing with a succession of objects (window controller, document, application, etc) that depends on which kind of responder chain (mouse, keyboard, action, etc) is being traversed. Creating a view controller does *not* link it into the window's tree of responders, and therefore the view controller is not part of the responder chain. The "no longer" in your comment above doesn't apply: it was never in the chain. In your scenario, where the view controller is playing little brother to the window controller -- is implementing and validating action methods -- it needs to be inserted manually into the tree of responders so that it *will* appear in the responder chain. For example, you can do it in the 'loadView' override of a NSViewController subclass: > - (void) loadView > { > [super loadView]; > > // Insert this view controller into the responder chain > > NSResponder* nextResponder = self.view.nextResponder; > self.view.nextResponder = self; > self.nextResponder = nextResponder; > > } _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com