我使用NSMenu项目的自定义视图,因此我可以通过isHighlighted
控制背景颜色。
问题是,如果您使用鼠标和键盘的组合来导航菜单,则可以一次选择两个项目。这是因为drawRect
没有被某些项目调用以取消它们
还有其他人遇到过这个吗?
答案 0 :(得分:0)
应使用以下方法创建NSMenuItem:
NSMenuItem *menuItem = [[NSMenuItem alloc] initWithTitle:@"" action:@selector(menuItemSelected:) keyEquivalent:@""];
其中选择器menuItemSelected:是一个有效的方法。如果未提供有效的操作选择器,则不会切换isHighlighted
答案 1 :(得分:0)
符合NSMenuDelegate
并实现以下功能:
func menu(_ menu: NSMenu, willHighlight item: NSMenuItem?) {
for item in menu.items.compactMap({ return $0.isHighlighted ? $0 : nil }) {
item.view?.needsDisplay = true
}
}