Re: Responder Chain Patching
Re: Responder Chain Patching
- Subject: Re: Responder Chain Patching
- From: Matt Neuburg <email@hidden>
- Date: Sun, 13 Jul 2008 19:20:55 -0700
- Thread-topic: Responder Chain Patching
On Sun, 13 Jul 2008 16:48:45 +0100, Keith Duncan <email@hidden> said:
>I'm working with NSViewController to create a workflow of controllers.
>I'm trying to patch the controller into the responder chain so that I
>can implement action methods in the specific controllers and in the
>window controller.
>
>I'm using the following code in an attempt to create a responder chain
>like this:
>
>ButtonView -> ContainerView -> MyViewController -> WindowContentView -
> > Window -> WindowController -> etc...
>
>- (void)setViewController:(TLViewController *)controller {
> if (_viewController != controller) {
> [_viewController release];
> _viewController = [controller retain];
> _viewController.controller = self;
>
> [self setActiveContentView:[_viewController view]];
>
> // Patch into the responder chain
> // This must be done after the view has a superview
> [_viewController setNextResponder:[[_viewController view]
>nextResponder]];
> [[_viewController view] setNextResponder:_viewController];
> }
>}
>
>However, it isn't working. The view controller doesn't receive any
>messages
This might not be of any help, because I know nothing whatever about
NSViewController or why you'd want to insert one into the responder chain
(and whether that's okay or necessary to do). But I *am* a *huge* fan of
inserting stuff into the responder chain - it's something I do all the time.
And when I do it, I patch the chain in opposite order.
For example, in several of my apps I inject an NSResponder subclass instance
after an NSTableView (so, between the table view and the window - actually,
it's between the table view's containing scrollview and the window). And
here's how the code goes (I use awakeFromNib and keep an instance of my
NSResponder subclass in the nib, so that I am guaranteed of having just one
and of having everything hook up at the appropriate moment):
- (void) awakeFromNib {
NSResponder* r = [[myTableView enclosingScrollView] nextResponder];
[[myTableView enclosingScrollView] setNextResponder: self];
[self setNextResponder: r];
}
It might help or it might make no difference at all, but that's the kind of
thing that works for me... m.
--
matt neuburg, phd = email@hidden, <http://www.tidbits.com/matt/>
A fool + a tool + an autorelease pool = cool!
One of the 2007 MacTech Top 25: <http://tinyurl.com/2rh4pf>
AppleScript: the Definitive Guide - Second Edition!
<http://www.amazon.com/gp/product/0596102119>
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden