【发布时间】:2013-02-07 15:35:48
【问题描述】:
我想在我的自定义 drawRect 方法中检查我的自定义 NSButton 当前是否处于按下状态(用户正在点击它)。像这样的:
- (void)drawRect:(NSRect)dirtyRect{
if ([self buttonIsInPressedState]) {
[[self alternateBGImage] drawInRect:dirtyRect fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0f];
}else{
[[self BGImage] drawInRect:dirtyRect fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0f];
}
[super drawRect:dirtyRect];
}
你会如何检查这样的事情?有可能吗?
解决方案
我最终检查了按钮单元格上的 mouseDownFlags。不知道这是否是“正确”的做法,如果您有更好的建议,请告诉我:
- (void)drawRect:(NSRect)dirtyRect{
if ([self.cell mouseDownFlags] == 0) {
[[self BGImage] drawInRect:dirtyRect fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0f];
}else{
[[self alternateBGImage] drawInRect:dirtyRect fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0f];
}
[super drawRect:dirtyRect];
}
【问题讨论】:
标签: objective-c xcode macos drawrect nsbutton