用Cocoa实现点击按钮打开快捷菜单
用一个自定义按钮打开菜单已经是一个很常见的需求的。不过NSPopupButton
对于我们的这种需求来说显得有点不合适。最终的结果如下所示:
实现的方法很简单,代码如下所示:
- (IBAction)showMenu:(id)sender { NSRect frame = [(NSButton *)sender frame]; NSPoint menuOrigin = [[(NSButton *)sender superview] convertPoint:NSMakePoint(frame.origin.x, frame.origin.y) toView:nil]; NSEvent *event = [NSEvent mouseEventWithType:NSLeftMouseDown location:menuOrigin modifierFlags:NSLeftMouseDownMask timestamp:0 windowNumber:[[(NSButton *)sender window] windowNumber] context:[[(NSButton *)sender window] graphicsContext] eventNumber:0 clickCount:1 pressure:1]; // contextMenu可以直接在XIB里初始化一个菜单 [NSMenu popUpContextMenu:contextMenu withEvent:event forView:(NSButton *)sender]; }
啰嗦一句,关于自定义按钮的设定问题。截图中的自定义按钮就是一个普通的push button,在IB里作如下设置:
也就是取消掉Bordered,以及指定一个Image和Alternative (Image)。
【声明】本文 用Cocoa实现点击按钮打开快捷菜单 为柠之漠然原创文章,转载请注明出自
枫之落叶
并保留本文有效链接:https://blog.shiniv.com/2013/06/%e7%94%a8cocoa%e5%ae%9e%e7%8e%b0%e7%82%b9%e5%87%bb%e6%8c%89%e9%92%ae%e6%89%93%e5%bc%80%e5%bf%ab%e6%8d%b7%e8%8f%9c%e5%8d%95/ , 转载请保留本声明!
哎呦,这谁的博客啊,好卡哇伊