6

カスタムの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];
}
4

4 に答える 4

5

をチェックしてこれを解決しました[self isHighlighted]

于 2015-01-12T09:03:22.633 に答える
3

drawRect:「 」はこれを捕まえるのに適切な場所ではないと思います。

NSButtonをサブクラス化してから、またはのいずれmouseDown:かをオーバーライドできます(ボタンが選択されているか、押されていることを示すsetState:「」を探します)。NSOnState

于 2013-02-22T05:21:39.243 に答える
1

ボタンセルのmouseDownFlagsをチェックすることになりました。それが「正しい」方法かどうかわからないので、もっと良い提案があれば教えてください。解決策は上記の質問で更新されます。

于 2013-02-22T20:31:32.800 に答える
0
if([pBtn state]==NSOnState){
   NSLog(@" button Pressed ")
}else{
   NSLog(@" button not pressed ");

}
于 2013-02-22T06:21:09.660 に答える