2011-11-03 11 views
6

मैं UIButton प्रोग्राम के रूप में यहाँ अनुरूपण हूँ: है अगर मैं छवि पृष्ठभूमि छवि को दबाए रखकर कर रहा हूँ गायब हो जाता है जब तक मैं इसे जारी कर रहा हूँUIButton दबाए जाने के लिए सही UIControlState क्या है?

button = [UIButton buttonWithType:UIButtonTypeCustom]; 
     [button setSelected:YES]; 
     button.frame = CGRectMake(x, y, width, height); 
     [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
     [button setTitleColor:[UIColor blueColor] forState:UIControlStateSelected]; 
     [button setTitle:@"Button Title" forState:UIControlStateNormal]; 
     [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; 
     [button setBackgroundImage:[UIImage imageNamed:@"button.png"] forState:UIControlStateNormal]; 
     [button setBackgroundImage:[UIImage imageNamed:@"buttonActive.png"] forState:UIControlStateSelected]; 
     [button setBackgroundImage:[UIImage imageNamed:@"buttonActive.png"] forState:UIControlStateHighlighted]; 
     [button setBackgroundImage:[UIImage imageNamed:@"buttonActive.png"] forState:UIControlStateDisabled]; 

मुद्दा ...

उत्तर

8

मुझे लगता है कि आप कर रहे हैं ओवरकिल मोड में :)। UIControlStateNormal के लिए बटन बटन सेट करने का प्रयास करें और UIControlStateHighlighted के लिए buttonActive.png। बाकी के लिए कोई ज़रूरत नहीं है। देखें कि यह काम करता है या नहीं।

संपादित करें:

ही, ध्यान रखें: छवि फ़ाइल नाम केस संवेदी

आप डिवाइस पर परीक्षण कर रहे हैं कर रहे हैं? छवि नाम डिवाइस निर्माण के लिए केस संवेदनशील होते हैं, लेकिन सिम्युलेटर के लिए नहीं। उदाहरण के लिए, यदि आपकी वास्तविक छवि फ़ाइल को buttonactive.png नाम दिया गया है, लेकिन आप इसे अपने कोड से बटनActive.png के रूप में बुला रहे हैं, तो यह सिम्युलेटर पर दिखाई देगा, लेकिन डिवाइस पर नहीं।

कृपया सुनिश्चित करें कि छवि नाम दोनों के लिए केस वास्तविक फ़ाइल के नाम से मेल खाता है।

संपादित करें # 2:

इस कोड का प्रयास करें

button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [button setSelected:YES]; 
    button.frame = CGRectMake(x, y, width, height); 
    [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
    [button setTitleColor:[UIColor blueColor] forState:UIControlStateSelected]; 
    [button setTitle:@"Button Title" forState:UIControlStateNormal]; 
    [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; 
    [button setBackgroundImage:[UIImage imageNamed:@"button.png"] forState:UIControlStateNormal]; 
    [button setBackgroundImage:[UIImage imageNamed:@"buttonActive.png"] forState:UIControlStateHighlighted]; 
+1

मुझे लगता है कि छवि फ़ाइल नाम केस एक पर संवेदनशील होते हैं जोड़ सकते हैं डिवाइस, लेकिन सिम्युलेटर में नहीं। यह मुझे कुछ बार मेरे सिर खरोंच कर रहा था :) – Keller

+0

@Sid: मुझे पता है कि ** छवि नाम मामले संवेदनशील हैं **। मैं आईफोन सिम्युलेटर पर परीक्षण कर रहा हूं लेकिन उसे प्रतिक्रिया देना चाहिए ... –

+0

@ केलर: :) ... – Sid

3

यह चित्रा बाहर है, यह इस तरह से काम करता है:

[_whateverButtonTab setBackgroundImage:[UIImage imageNamed:@"ActivateButton.png"] forState:UIControlStateSelected]; 
[_whateverButtonTab setBackgroundImage:[UIImage imageNamed:@"ActivateButton.png"] forState:(UIControlStateHighlighted|UIControlStateSelected)]; 
-2

हम आईडीई

से

एक बटन जोड़ने जबकि नमूना:

फ़ाइल में 10

यह है

-(IBAction)BtnAdd:(id)sender 
{ 
} 

यह एक विधि है कि सक्षम या अक्षम नहीं कर सकता है।

इसलिए यदि आप सक्षम या अक्षम करना चाहते हैं बटन बनाने के रूप में -(IBOutlet)BtnAdd .h फाइल करने के लिए IBOutlet जोड़ने और यह विशेष रूप से बटन से कनेक्ट तो BtnAdd.enabled=NO काम करेंगे