菜单栏应用程序的自定义视图上的 mouseDown 问题
Posted
技术标签:
【中文标题】菜单栏应用程序的自定义视图上的 mouseDown 问题【英文标题】:mouseDown issue on custom view for a menubar app 【发布时间】:2012-07-24 14:23:32 【问题描述】:我正在尝试编写拖放菜单栏应用程序。我使用自定义视图来访问删除的文件,这很好用。现在我想在单击此视图时打开默认菜单。我正在使用这个:
- (void)mouseDown:(NSEvent *)event
[statusItem popUpStatusItemMenu:statusMenu];
现在,mouseDown 工作正常(尝试使用 NSLog),但我仍然无法访问 statusItem 和 statusMenu。
这是在 dropView.m 中,在 dropView.h 我得到了:
@interface dropView : NSView
IBOutlet NSMenu *statusMenu;
NSStatusItem *statusItem;
没有崩溃,没有日志……有什么想法吗?太棒了!
这比 .m 多了一点
- (void)awakeFromNib
statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
[statusItem setMenu:statusMenu];
dropView *drop = [[dropView alloc] initWithFrame:NSMakeRect(0, 0, 24, 24)];
[statusItem setView:drop];
【问题讨论】:
nope this give and error (property not found) 属性合成了吗? 2012-07-24 16:50:54.107 CopyDrop[13783:403] -[dropView statusMenu]:无法识别的选择器发送到实例 0x7fd6eb821760 【参考方案1】:将此添加到您的 .h 文件中:
@property (strong, nonatomic) IBOutlet NSMenu *statusMenu;
@property (strong, nonatomic) NSStatusItem *statusItem;
将此添加到您的 .m 文件中:
@synthesize statusMenu, statusItem;
然后您将使用self.statusMenu
和self.statusItem
访问属性。
【讨论】:
2012-07-24 17:15:27.482 CopyDrop[14728:403] statusMenu: (null) statusItem: (null) 所以您正在访问它们,它们只是其中没有任何内容。我以为您正在将它们设置为某些东西... 你不应该使用 self.statusItem 和 self.statusMenu 吗? 我愿意:- (void)mouseDown:(NSEvent *)event [self.statusItem popUpStatusItemMenu:self.statusMenu]; 你不在你的awakeFromNib
方法中以上是关于菜单栏应用程序的自定义视图上的 mouseDown 问题的主要内容,如果未能解决你的问题,请参考以下文章