用Cocoa实现点击按钮打开快捷菜单

2013年6月13日 分类: Cocoa, 编程 (175 个脚步)

用一个自定义按钮打开菜单已经是一个很常见的需求的。不过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实现点击按钮打开快捷菜单 【声明】本文 用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/ , 转载请保留本声明!

标签:
6 条评论
  • 哎呦,这谁的博客啊,好卡哇伊

  • 这个更新速度毁了,敢不敢回访并留言一个。

    • 现在不是毕业了么,找工作中~

      • 我只想说,我来这么多条评论你一条不给我,诅咒你找不到

你必须要启用 Javascript