2013-02-22 17 views
6

पर नीचे है, तो मैं यह जांचना चाहता हूं कि मेरे कस्टम NSButton वर्तमान में एक दबाए गए राज्य में है (उपयोगकर्ता इस पर क्लिक कर रहा है) मेरे कस्टम drawRect विधि में। कुछ ऐसा:जांच कर रहा है कि क्या NSButton 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]; 
} 

आप इस तरह की चीज़ कैसे देखेंगे? क्या यह संभव है?

समाधान

मैं बटन सेल पर 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]; 
} 

उत्तर

2

मैंने बटन सेल पर माउसडाउनफ्लैग की जांच समाप्त कर दी। यह नहीं पता कि यह करने का "सही" तरीका है, इसलिए यदि आपके पास बेहतर सुझाव है तो मुझे बताएं। समाधान ऊपर दिए गए प्रश्न में अद्यतन किया गया है।

4

मुझे नहीं लगता कि "drawRect:" सही जगह इस पकड़ने की कोशिश करने के लिए है ।

आप NSButton उपवर्ग सकते हैं और फिर ओवरराइड या तो mouseDown: या setState: (है "NSOnState" है, जो बटन का प्रतीक है की तलाश में किसी एक को चुनने या पर दबाया जा रहा)।

+0

मैंने self.state की कोशिश की है, लेकिन यह केवल "गीले" या "ऑफ" बटन के गीलेर के लिए काम करता है! तो बटन "चालू" है, एक बार मैंने इसे दबा दिया है और इसे जारी किया है। मैं जांचना चाहता हूं कि उपयोग वर्तमान में दबा रहा है या नहीं। माउसडाउन भी एक विकल्प है, लेकिन मुझे कुछ कारणों से काम करने के लिए माउसअप नहीं मिल सकता है। –

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

} 
+0

मैंने self.state की कोशिश की है, लेकिन यह केवल "गीला" या "ऑफ" बटन गीलेर के लिए काम करता है! तो बटन "चालू" है, एक बार मैंने इसे दबा दिया है और इसे जारी किया है। मैं जांचना चाहता हूं कि उपयोग वर्तमान में दबा रहा है या नहीं। –

+0

क्या आप पुश बटन का उपयोग कर सकते हैं, इसका मूल रूप से एक टॉगल बटन है, शायद आप जो हासिल करना चाहते हैं उसे प्राप्त कर सकते हैं .. – Amitg2k12

+0

मैंने कोशिश की। काम नहीं करता मैं उपरोक्त कर समाप्त हो गया। अगर आपके पास बेहतर समाधान है तो मुझे बताएं। –

5

मैंने इसे [self isHighlighted] पर चेक करके हल किया।

+0

आप एक परी हैं – maxisme

+1

मैं जीवन से बहुत नाराज होने वाला था – maxisme

संबंधित मुद्दे