作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我已将自定义 View 添加到我的 NSMenuItem 子类(位于 NSStatusMenu 中),这意味着默认情况下它不会使用蓝色/灰色背景“突出显示”。
我使用以下代码实现了这一点:
- (void)drawRect:(NSRect)rect {
BOOL isHighlighted = [menuItem isHighlighted];
if (isHighlighted) {
[[NSColor selectedMenuItemColor] set];
[NSBezierPath fillRect:rect];
[menuItem addHover];
} else {
[super drawRect:rect];
[menuItem removeHover];
}
}
- (void)mouseUp:(NSEvent*)event {
NSMenuItem *item = [self enclosingMenuItem];
NSMenu *menu = [item menu];
[menu cancelTracking];
[menu performActionForItemAtIndex:[menu indexOfItem:item]];
}
菜单项很好地突出显示,我也可以点击每个项目;然而,当我点击它们时,它们似乎会在我重新打开菜单后保持 isHighlighted 状态。
有没有办法改变它,以便在我单击时,在我下次打开菜单时突出显示的状态被删除?
最佳答案
令我震惊的是,我们必须执行此操作而不是简单的 NSMenuItem setHighlighted、NSMenu removeHighlights 或其他操作。这是一个看起来很像 MrWalker 的答案的片段。它只是从菜单中删除您自己的菜单项并将其放回原位。
NSMenuItem *selfmi = [self enclosingMenuItem];
NSMenu* menu = [[self enclosingMenuItem] menu];
int i = [menu indexOfItem:selfmi];
[menu removeItemAtIndex:i];
[menu insertItem:selfmi atIndex:i];
关于objective-c - 单击后从 NSMenuItem 中删除突出显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6169930/
有没有一种方法可以“标记”对象的属性,使它们在反射中“突出”? 例如: class A { int aa, b; string s1, s2; public int AA
我是一名优秀的程序员,十分优秀!