Cocoa 按下NSPOUPBUTTON drawRect手柄
I子类NSPopUpButton(位于工具栏中并打开一个NSMenu)并执行可选drawRectCocoa 按下NSPOUPBUTTON drawRect手柄,cocoa,nsview,nsbutton,Cocoa,Nsview,Nsbutton,I子类NSPopUpButton(位于工具栏中并打开一个NSMenu)并执行可选drawRect - (void)drawRect:(NSRect)dirtyRect { if (ISPUSHED) { } else { } } 如何确定按钮是否按下(菜单正在显示)?nspoupbutton是NSButton的子类,因此您可以像在任何其他按钮上一样覆盖mouseDown:和mouseUp:方法 如果需要,可以使用它们设置布尔属性,如isPushed,并在drawRect
- (void)drawRect:(NSRect)dirtyRect {
if (ISPUSHED) {
} else {
}
}
如何确定按钮是否按下(菜单正在显示)?
nspoupbutton
是NSButton
的子类,因此您可以像在任何其他按钮上一样覆盖mouseDown:
和mouseUp:
方法
如果需要,可以使用它们设置布尔属性,如
isPushed
,并在drawRect:
方法中使用,但是将绘图代码放在鼠标下:
和鼠标下:
中可能会更明智。对于带有NSMenu的NSPOUPBUTTON,唯一有效的方法是将其设置为委托
@interface AddDevicePopUpButton()
@property (nonatomic, assign, getter = isShowingMenu) BOOL showingMenu;
@end
@implementation AddDevicePopUpButton
- (void)awakeFromNib {
[super awakeFromNib];
self.menu.delegate = self;
}
- (void)drawRect:(NSRect)dirtyRect {
if (self.showingMenu) {
} else {
}
}
- (void)menuWillOpen:(NSMenu *)menu {
self.showingMenu = YES;
}
- (void)menuDidClose:(NSMenu *)menu {
self.showingMenu = NO;
}
这并不总是如预期的那样有效,当与弹出的菜单结合使用时,您可以更具体一些吗?也许用你正在使用的代码编辑你的问题?这将有助于了解您的实际目标,您是否试图在用户单击按钮时更改按钮图像?