No need to "go across nibs" or "intercept" anything.
In Interface Builder, open MainMenu.nib. Control-drag (holding down the control key, click, and then drag) from your menu item, say "Zoom", to the first responder. In the connections pane of the inspector window, select the action method you have added to first responder, say "zoom:", and connect. That's it in Interface Builder. (Don't forget to save.)
In your custom view class, you programmatically (in Xcode, not in Interface Builder) implement a method called "zoom:", like
Code:
- (IBAction)zoom:(id)sender {
zoomFactor *= 2.0; [self setNeedsDisplay:YES];
}
Finished. (Don't forget to save and build.)
Now, when your application is running and you select "Zoom" from the menu, the application will send an action message with "zoom:" as the method to perform to whichever view happens to be the key view (to have input focus, the one on which you last clicked and to which keyboard input gets sent, often with a thin, light-blue frame around it).
If the key view is an instance of your custom view class, it will "respond" to the action message, because you have implemented a "zoom:" method, which will then get performed.
Otherwise, if the key view is of another class, a text field, for example, it will not respond to the "zoom:" message and nothing will happen.
To summarize, the "intercepting" is done for you by the application at run-time, based on the name of the action method and the class of the key (input receiving) view.