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