วิธีการปิดการใช้งานสถานะการควบคุมที่เน้นของ UIButton?


147

ฉันได้รับ UIButton แล้วเมื่อเลือกไม่ควรเปลี่ยนสถานะเมื่อถูกสัมผัส พฤติกรรมเริ่มต้นคือให้มันอยู่ใน UIControlStateHighlighted ขณะที่ถูกแตะต้องและสิ่งนี้ทำให้ฉันโกรธ

ข้อเสนอแนะ?

คำตอบ:


313

ปุ่มของคุณต้องมีการbuttonTypeตั้งค่าเป็นแบบกำหนดเอง

ใน IB คุณสามารถยกเลิกการเลือก "เน้นการปรับภาพ"

โดยทางโปรแกรมคุณสามารถใช้ theButton.adjustsImageWhenHighlighted = NO;

ตัวเลือกที่คล้ายกันมีให้สำหรับสถานะ "ปิดใช้งาน" เช่นกัน


1
โอกาสใดที่คุณรู้ว่าเวอร์ชันของโปรแกรมนี้จะเป็นอย่างไร ตอนนี้ฉันทำให้แฮ็คทำงานได้โดยทำให้มันปิดการใช้งานและทำการตกแต่งตามที่ได้รับเลือก
kbanman

99
uibutton.adjustsImageWhenHighlighted = NO;
Haydn

43
ตรวจสอบให้แน่ใจด้วยว่าตั้งค่าประเภทปุ่มเป็น CUSTOM (ดังที่ Mosib Asad พูดถึงในคำตอบอื่น)
Vlad Lego

ยิ่งใหญ่ !!! เพียงเล็กน้อยและชัดเจนการเปลี่ยนแปลงที่ฉันพลาด !!! ฉันได้ตั้งค่าประเภทคลาส UIButton เป็น MyCustomClass แต่ยังไม่สามารถเปลี่ยนได้ ดังนั้นมันจึงให้ผลที่เน้นปุ่มที่ไม่ได้เลือก ขอบคุณอีกครั้ง.
Vinod Supnekar

38

นอกจากคำตอบข้างต้นของการยกเลิกการทำเครื่องหมาย "ไฮไลต์ปรับภาพ" ใน IB ตรวจสอบให้แน่ใจว่าประเภทปุ่มนั้นถูกตั้งค่าไว้ที่ CUSTOM


2
นี่เป็นส่วนที่ขาดหายไป: ปุ่มประเภท CUSTOM Thanx!
JOM

1
ถ้าฉันต้องการเก็บไว้เป็น UIButton ของระบบ ฉันไม่สามารถลบไฮไลต์ปรับภาพได้หรือไม่
Amjad Husseini

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

บรรทัดที่ 3 คือกลอุบายที่นี่ ...

ใช้งานได้เหมือนกันสำหรับการตั้งค่าภาพ / backgroundImage


1
มันใช้งานได้สมบูรณ์แบบสำหรับฉัน adjustsImageWhenHighlightedทรัพย์สินของUIButtonดูเหมือนว่าจะมีผลเฉพาะภาพพื้นหลัง
Michael Thiel

โปรดระวังว่าหากตัดสินใจที่จะกำหนดภาพให้กับ 'สถานะที่ถูกปิดใช้งาน' คุณจะไม่เรียกใช้ setBackgroundImage แต่คุณควรทำตาม [ปุ่ม setImage: image forState: UIControlStateDisabled]; นอกจากนี้ยังต้องระวังเช่นที่กล่าวไว้ในหัวข้อนี้คุณสมบัติ adjustsImageWhenHighHighed UIButton มีผลเฉพาะกับภาพพื้นหลังเท่านั้น
HamasN


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 ของวิธี IBAction สำหรับ TouchUpInside หรือ TouchDown หรืออะไรก็ตาม สำหรับฉันมันเป็นเรื่องดีที่ TouchUpInside

-(IBAction)selfDismiss:(id)sender {

    self.btnImage.highlighted = NO;

    NSLog(@"selfDismiss");

    etc, etc, etc.

}



2

แค่สองสิ่ง:

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

2

ฉันมีปัญหาที่คล้ายกันและพบว่า "ไม่เลือก" เคลียร์เนื้อหากราฟิกในเครื่องมือสร้างส่วนต่อประสานแก้ไขปัญหาของฉันได้

ป้อนคำอธิบายรูปภาพที่นี่


2

ทำปุ่มของคุณประเภท - "กำหนดเอง" และยกเลิกการทำเครื่องหมาย - เน้นปรับภาพและคุณเสร็จแล้ว


-3

หลีกเลี่ยงการตั้ง UIButton ของเส้นแบ่งที่จะClipใช้แทนมาตรฐานการตัดกลาง

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.