2013-02-22 7 views
6

0 ist Ich möchte überprüfen, ob mein benutzerdefinierter NSButton derzeit in einem gedrückten Zustand (der Benutzer ist darauf klicken) in meiner benutzerdefinierten DrawRect-Methode. Etwas wie dieses:Überprüfen, ob NSButton auf drawRect

- (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]; 
} 

Wie würden Sie eine Sache so überprüfen? Ist es möglich?

SOLUTION

endete ich die mouseDownFlags auf die Tasten Zelle überprüft werden. Weiß nicht, ob es die „richtige“ Art und Weise, es zu tun, so lassen Sie mich wissen, wenn Sie einen besseren Vorschlag:

- (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]; 
} 

Antwort

2

Ich landete die Überprüfung der MausDownFlags auf der Schaltfläche Zelle. Ich weiß nicht, ob es der "richtige" Weg ist, also lass es mich wissen, wenn du einen besseren Vorschlag hast. Lösung wird in der obigen Frage aktualisiert.

4

Ich glaube nicht, „drawRect:“ ist der richtige Ort, um zu versuchen, diese zu fangen .

Sie können NSButton ableiten und dann entweder mouseDown: oder setState: überschreiben (suchen Sie nach "NSOnState", was bedeutet, dass die Schaltfläche ausgewählt ist oder gedrückt wird).

+0

Ich habe versucht, self.state, aber es funktioniert nur, ob die Taste "On" oder "Off" ist! Also der Knopf ist "On", nachdem ich ihn gedrückt habe UND ihn losgelassen habe. Ich möchte prüfen, ob die Anwendung momentan gedrückt wird. MouseDown ist auch eine Option, aber ich kann MouseUp aus irgendeinem Grund nicht funktionieren. –

0
if([pBtn state]==NSOnState){ 
    NSLog(@" button Pressed ") 
}else{ 
    NSLog(@" button not pressed "); 

} 
+0

Ich habe self.state ausprobiert, aber es funktioniert nur, wenn der Button "On" oder "Off" ist! Also der Knopf ist "On", nachdem ich ihn gedrückt habe UND ihn losgelassen habe. Ich möchte prüfen, ob die Anwendung momentan gedrückt wird. –

+0

Können Sie Push-Taste verwenden, ist es im Grunde ein Toggle-Taste, vielleicht können Sie bekommen, was Sie erreichen wollen .. – Amitg2k12

+0

Ich habe versucht. Funktioniert nicht. Am Ende habe ich das gemacht. Lassen Sie es mich wissen, wenn Sie eine bessere Lösung haben. –

5

Ich löste dies durch Überprüfung [self isHighlighted].

+0

Du bist ein Engel – maxisme

+1

Ich war im Begriff, sehr wütend auf das Leben zu werden – maxisme