我想在我的自定义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];
}
答案 0 :(得分:5)
我通过检查[self isHighlighted]
解决了这个问题。
答案 1 :(得分:4)
我不认为“drawRect:
”是试图抓住这个问题的正确位置。
您可以继承NSButton,然后覆盖mouseDown:
或setState:
(查找“NSOnState
”,表示该按钮已被选中或被按下)。
答案 2 :(得分:1)
我最终检查了按钮单元格上的mouseDownFlags。不知道这是否是“正确”的方式,所以如果你有更好的建议,请告诉我。解决方案在上面的问题中更新。
答案 3 :(得分:0)
if([pBtn state]==NSOnState){
NSLog(@" button Pressed ")
}else{
NSLog(@" button not pressed ");
}