Dear Volker,

I noticed that no IBAction/IBOutlet is available for the items in the code.
Should I make some connections for them?

I just connect the context menu with the class of ContextMenuView and
connect the NSView in the Window with ContextMenuView.

Thanks,
LB


On Tue, Apr 5, 2011 at 4:06 AM, Volker in Lists <volker_li...@ecoobs.de>wrote:

> Hi,
>
> have you connected the menu items in interface builder with their commands?
> Then they will get active, if the responder is also available.
>
> volker
> Am 04.04.2011 um 21:38 schrieb Bing Li:
>
> > Dear all,
> >
> > I am now learning programming on Cocoa following the book, Cocoa
> Programming
> > Developers Handbook.
> >
> > When programming Context Menus (Page 237), I got a problem. Although the
> > context menu can be shown, it is weird that all of the items in the
> context
> > menu are disabled. However, when running the sample provided by the book,
> > the items are enabled. I think I follow the book restrictedly. I could
> NOT
> > get the solution. The major code is as follows, which is completely from
> the
> > book. Could you please give me a hint?
> >
> > Thanks so much!
> > LB
> >
> > import "ContextMenuView.h"
> >
> > static NSMenu *defaultMenu;
> >
> > @implementation ContextMenuView
> > + (NSMenu*)defaultMenu
> > {
> >        if (nil == defaultMenu)
> >        {
> >                @synchronized(self)
> >                {
> >                        if (nil == defaultMenu)
> >                        {
> >                                defaultMenu = [NSMenu new];
> >                                [defaultMenu addItemWithTitle: @"Copy"
> >
> > action: @selector(copy:)
> >
> > keyEquivalent: @"c"];
> >                                [defaultMenu addItemWithTitle: @"Paste"
> >
> > action: @selector(paste:)
> >
> > keyEquivalent: @"v"];
> >                        }
> >                }
> >        }
> >        return defaultMenu;
> > }
> > static BOOL addItemsToMenuFromMenu(NSMenu *menu, NSMenu *template)
> > {
> >        for (NSMenuItem *item in [template itemArray])
> >        {
> >                NSMenuItem *itemCopy = [item copy];
> >                [menu addItem: itemCopy];
> >                [itemCopy release];
> >        }
> >        return [menu numberOfItems] > 0;
> > }
> > - (NSMenu*)menuForEvent: (NSEvent*)theEvent
> > {
> >        NSPoint click = [self convertPoint: [theEvent locationInWindow]
> >                                                          fromView: nil];
> >
> >        NSMenuItem *locationMenuItem =
> >        [[NSMenuItem alloc] initWithTitle: NSStringFromPoint(click)
> >                                                           action: NULL
> >                                                keyEquivalent: @""];
> >        [locationMenuItem setEnabled: NO];
> >        NSMenu *menu = [NSMenu new];
> >        [menu addItem: locationMenuItem];
> >        [locationMenuItem release];
> >        [menu addItem: [NSMenuItem separatorItem]];
> >        if (addItemsToMenuFromMenu(menu, [self menu]))
> >        {
> >                [menu addItem: [NSMenuItem separatorItem]];
> >        }
> >        addItemsToMenuFromMenu(menu, [[self class] defaultMenu]);
> >        return [menu autorelease];
> > }
> > @end
> > _______________________________________________
> >
> > 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/volker_lists%40ecoobs.de
> >
> > This email sent to volker_li...@ecoobs.de
>
>
_______________________________________________

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

Reply via email to