UIButton के हाइलाइट कंट्रोल स्टेट को कैसे डिसेबल करें?


147

मुझे एक UIButton मिला है, जिसे चुने जाने पर, स्पर्श किए जाने पर स्थिति नहीं बदलनी चाहिए। डिफ़ॉल्ट व्यवहार स्पर्श करने के दौरान UIControlStateHighlighted में होना है, और यह मुझे गुस्सा दिला रहा है।

सुझाव?

जवाबों:


313

आपका बटन buttonTypeकस्टम पर सेट होना चाहिए ।

आईबी में आप "हाइलाइट एडजस्ट इमेज" को अनचेक कर सकते हैं।

प्रोग्रामेटिक रूप से आप उपयोग कर सकते हैं theButton.adjustsImageWhenHighlighted = NO;

इसी तरह के विकल्प "विकलांग" राज्य के लिए भी उपलब्ध हैं।


1
कोई भी मौका आपको पता है कि इसका प्रोग्रामेटिक संस्करण क्या होगा? अभी मैंने इसे निष्क्रिय रूप से हैक करके काम किया है, और इसे चुने जाने के लिए तैयार किया गया है।
कर्बन

99
uibutton.adjustsImageWhenHighlighted = NO;
हेडन

43
यह भी सुनिश्चित करें कि बटन प्रकार कस्टम पर सेट है। (जैसा कि मोसिब असद ने एक अन्य जवाब में उल्लेख किया है)
व्लाद लेगो

महान!!! बस थोड़ा सा और स्पष्ट बदलाव जो मुझे याद आया !!! मैंने UIButton वर्ग के प्रकार को MyCustomClass पर सेट किया था, लेकिन इसे बदलने के लिए जालसाजी की। तो यह अचयनित बटन को उजागर प्रभाव दे रहा था। एक बार फिर आपका धन्यवाद।
विनोद सुपेकर

38

IB में "हाइलाइट एडजस्ट इमेज" को अनचेक करने के उपरोक्त उत्तर के अलावा, सुनिश्चित करें कि बटन प्रकार CUSTOM सेट है।


2
यह लापता टुकड़ा था: बटन प्रकार कस्टम। Thanx!
JOM

1
क्या होगा अगर मैं एक सिस्टम यूआईबूटन के रूप में रखना चाहूंगा? क्या मैं हाइलाइट एडजस्ट इमेज को नहीं हटा सकता?
अमजद हुसैनी

36

यह आपके लिए काम करेगा:

[button setBackgroundImage:[UIImage imageNamed:@"button_image"] forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"button_image_selected"] forState:UIControlStateSelected];
[button setBackgroundImage:[UIImage imageNamed:@"button_image_selected"] forState:UIControlStateSelected | UIControlStateHighlighted];

तीसरी पंक्ति यहाँ चाल है ...

यह इमेज / बैकग्राउंड सेट करने के लिए समान काम करता है


1
यह मेरे लिए एकदम सही काम करता है। adjustsImageWhenHighlightedकी संपत्ति UIButtonकेवल पृष्ठभूमि छवि को प्रभावित करने लगता है।
माइकल थिएल

ज्ञात हो, कि यदि आप 'अक्षम राज्य' के लिए एक छवि निर्दिष्ट करने का निर्णय लेते हैं, तो आप setBackgroundImage को कॉल नहीं करते हैं। इसके बजाय, आपको निम्न करना चाहिए [बटन setImage: image forState: UIControlStateDisabled]; यह भी ध्यान रखें, कि जैसा कि इस धागे में बताया गया है, एडजस्टमइमेज व्हेनहाइगलाइटेड यूआईबूटन संपत्ति केवल पृष्ठभूमि छवि को प्रभावित करती है।
हमासन


23
button.adjustsImageWhenDisabled = NO;

एक अक्षम बटन की अपनी उपस्थिति होने के लिए समान रूप से उपयोगी है।


5

डिफ़ॉल्ट से बटन की हाइलाइट की गई स्थिति में क्या परिवर्तन होता है, इस पर निर्भर करते हुए, आप उन्हें अपनी ज़रूरत के हिसाब से सेट करने के लिए कुछ तरीकों को कॉल कर सकते हैं। तो अगर छवि बदल जाती है तो आप कर सकते हैं

[myButton setImage:[myButton imageForState:UIControlStateNormal] forState:UIControlStateHighlighted];

यदि पाठ बदलता है तो आप कर सकते हैं

[myButton setTitle:[myButton titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];

अन्य समान कार्य:

- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state

- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state


setTitleColor सब मैं UIButton के पाठ पर अक्षम उजागर करने की जरूरत है
atulkhatri

3

ठीक है यहाँ एक आसान समाधान है अगर यह आपके लिए काम करता है, तो इस पर मेरे सिर को पीटने के एक सप्ताह के बाद अंत में मेरे लिए यह हुआ कि मैं टचअप या टचडाउन, या जो भी काम करता हूं उसके लिए आईबीएशन विधि की 1 पंक्ति के लिए हाइलाइट किए गए = NO। मेरे लिए यह टचअप इंसाइड पर ठीक था।

-(IBAction)selfDismiss:(id)sender {

    self.btnImage.highlighted = NO;

    NSLog(@"selfDismiss");

    etc, etc, etc.

}

3

स्विफ्टी डेवलपर के लिए -

yourButton.adjustsImageWhenHighlighted = false

3

स्विफ्ट 3+

button.adjustsImageWhenHighlighted = false

button.adjustsImageWhenDisabled = false

2

सिर्फ दो चीजें:

UIButton *btnTransparentComponent = [UIButton buttonWithType:UIButtonTypeCustom];
btnTransparentComponent.adjustsImageWhenHighlighted = NO;

2

मेरे पास एक समान मुद्दा था और पाया गया कि इंटरफ़ेस बिल्डर में "अनियंत्रित" क्लियर ग्राफिक सामग्री ने मेरा मुद्दा तय कर दिया

यहाँ छवि विवरण दर्ज करें


2

अपना बटन टाइप करें - "कस्टम" और अनचेक करें - हाइलाइट एडजस्ट इमेज और आप हो गए।


-3

UIButton के लाइन ब्रेक टू क्लिप को सेट करने से बचें , इसके बजाय मानक ट्रंकट मध्य का उपयोग करें

यहाँ छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.