2013-02-22 15 views
6

Chciałbym sprawdzić, czy mój niestandardowy przycisk NS jest obecnie wciśnięty (użytkownik klika na niego) w mojej niestandardowej metodzie drawRect. Coś takiego:Sprawdzanie, czy przycisk NSButton jest wyłączony 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]; 
} 

Jak można sprawdzić coś takiego? Czy to możliwe?

ROZWIĄZANIE

skończyło się sprawdzanie mouseDownFlags na komórkę przycisków. Nie wiem, czy to jest „prawo” sposób to zrobić, więc daj mi znać, jeśli masz lepszy pomysł:

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

Odpowiedz

2

Skończyło się na sprawdzeniu mouseDownFlags w komórce przycisków. Nie wiem, czy jest to "właściwy" sposób, aby to zrobić, więc daj mi znać, jeśli masz lepszą sugestię. Rozwiązanie zostało zaktualizowane w powyższym pytaniu.

4

nie sądzę „drawRect:” jest właściwym miejscem, aby spróbować złapać to .

Możesz podklasować przycisk NS, a następnie zastąpić mouseDown: lub setState: (szukając "NSOnState", co oznacza, że ​​przycisk jest wybrany lub jest wciśnięty).

+0

Próbowałem self.state, ale działa tylko w przypadku, gdy przycisk jest "Włączony" lub "Wyłączony"! A więc przycisk jest "Włączony", kiedy go przyciśnięto I zwolniłem. Chcę sprawdzić, czy użycie jest AKTUALNIE naciśnięcie. MouseDown jest również opcją, ale nie mogę uruchomić myszy z jakiegoś powodu. –

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

} 
+0

Próbowałem już self.state, ale działa tylko dla wether przycisk "On" lub "Off"! A więc przycisk jest "Włączony", kiedy go przyciśnięto I zwolniłem. Chcę sprawdzić, czy użycie jest AKTUALNIE naciśnięcie. –

+0

Czy możesz użyć przycisku Push, jest to po prostu przycisk przełączający, być może możesz uzyskać to, co chcesz osiągnąć. – Amitg2k12

+0

Próbowałem. Nie działa. Skończyło się na powyższym. Daj mi znać, jeśli masz lepsze rozwiązanie. –

5

Rozwiązałem to, sprawdzając [self isHighlighted].

+0

Jesteś aniołem – maxisme

+1

Zaraziłem się bardzo na życie – maxisme

Powiązane problemy