作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有自定义 View 的 NSMenu,就像这样。
ViewController.swift
class ViewController: NSViewController {
@IBOutlet var theMenu: NSMenu!
@IBOutlet var theMenuItem: NSMenuItem!
@IBOutlet var customView: NSView!
override func viewDidLoad() {
theMenuItem.view = customView
}
@IBAction func showTheMenuWithCustomView(_ sender: NSButton) {
// Popup the menu below button
let position = NSPoint(x: 0, y: sender.frame.height+2)
theMenu.popUp(positioning: nil, at: position, in: sender)
}
}
这很有效。
但是在自定义 View 中,我需要弹出另一个菜单。我调用 popUp 方法后,它什么也不显示。这是代码:
CustomView.swift
class CustomView: NSView {
@IBAction func showCustomViewMenu(_ sender: NSButton) {
// Create the menu in custom view
let customViewMenu = NSMenu()
// Add a menu item in it
customViewMenu.addItem(withTitle: "no one care", action: nil, keyEquivalent: "")
// Popup the menu below button
let position = NSPoint(x: 0, y: sender.frame.height+2)
customViewMenu.popUp(positioning: nil, at: position, in: sender)
}
}
您可以克隆此项目来测试它:
https://github.com/Caldis/NSMenuQuestion
如何在 NSMenuItems 的自定义 View 中弹出 NSMenu ?
最佳答案
使用此行在 CustomView 上显示附加弹出窗口:
NSMenu.popUpContextMenu(customViewMenu, with: NSApp.currentEvent!, for: sender)
此外,如果您还需要禁用整个 CustomView
上的其他弹出窗口,请覆盖 CustomView
中的 rightMouseDown
,如下所示:
class CustomView: NSView {
override func rightMouseDown(with event: NSEvent) {
// Do nothing
}
}
关于swift - 如何在 NSMenuItems 的自定义 View 中弹出 NSMenu?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49159234/
我是一名优秀的程序员,十分优秀!