ฉันได้รับ UIButton แล้วเมื่อเลือกไม่ควรเปลี่ยนสถานะเมื่อถูกสัมผัส พฤติกรรมเริ่มต้นคือให้มันอยู่ใน UIControlStateHighlighted ขณะที่ถูกแตะต้องและสิ่งนี้ทำให้ฉันโกรธ
ข้อเสนอแนะ?
ฉันได้รับ UIButton แล้วเมื่อเลือกไม่ควรเปลี่ยนสถานะเมื่อถูกสัมผัส พฤติกรรมเริ่มต้นคือให้มันอยู่ใน UIControlStateHighlighted ขณะที่ถูกแตะต้องและสิ่งนี้ทำให้ฉันโกรธ
ข้อเสนอแนะ?
คำตอบ:
ปุ่มของคุณต้องมีการbuttonType
ตั้งค่าเป็นแบบกำหนดเอง
ใน IB คุณสามารถยกเลิกการเลือก "เน้นการปรับภาพ"
โดยทางโปรแกรมคุณสามารถใช้ theButton.adjustsImageWhenHighlighted = NO;
ตัวเลือกที่คล้ายกันมีให้สำหรับสถานะ "ปิดใช้งาน" เช่นกัน
นอกจากคำตอบข้างต้นของการยกเลิกการทำเครื่องหมาย "ไฮไลต์ปรับภาพ" ใน IB ตรวจสอบให้แน่ใจว่าประเภทปุ่มนั้นถูกตั้งค่าไว้ที่ CUSTOM
สิ่งนี้จะได้ผลสำหรับคุณ:
[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
adjustsImageWhenHighlighted
ทรัพย์สินของUIButton
ดูเหมือนว่าจะมีผลเฉพาะภาพพื้นหลัง
adjustsImageWhenHighlighted = NO;
button.adjustsImageWhenDisabled = NO;
มีประโยชน์เท่าเทียมกันสำหรับการมีปุ่มที่ถูกปิดใช้งาน
ขึ้นอยู่กับการเปลี่ยนแปลงจากค่าเริ่มต้นเป็นสถานะที่เน้นของปุ่มคุณสามารถเรียกวิธีการสองสามวิธีเพื่อตั้งค่าเป็นสิ่งที่คุณต้องการ ดังนั้นหากภาพเปลี่ยนไปคุณสามารถทำได้
[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
ตกลงนี่เป็นวิธีแก้ปัญหาที่ง่ายถ้าสิ่งนี้ใช้ได้ผลกับคุณหลังจากหนึ่งสัปดาห์ของการต่อสู้กับเรื่องนี้ในที่สุดมันก็เกิดขึ้นกับฉันแล้วที่ฉันเพิ่งตั้งเน้น = ไม่สำหรับบรรทัดที่ 1 ของวิธี IBAction สำหรับ TouchUpInside หรือ TouchDown หรืออะไรก็ตาม สำหรับฉันมันเป็นเรื่องดีที่ TouchUpInside
-(IBAction)selfDismiss:(id)sender {
self.btnImage.highlighted = NO;
NSLog(@"selfDismiss");
etc, etc, etc.
}
สำหรับนักพัฒนา Swifty -
yourButton.adjustsImageWhenHighlighted = false
Swift 3+
button.adjustsImageWhenHighlighted = false
button.adjustsImageWhenDisabled = false
แค่สองสิ่ง:
UIButton *btnTransparentComponent = [UIButton buttonWithType:UIButtonTypeCustom];
btnTransparentComponent.adjustsImageWhenHighlighted = NO;
ฉันมีปัญหาที่คล้ายกันและพบว่า "ไม่เลือก" เคลียร์เนื้อหากราฟิกในเครื่องมือสร้างส่วนต่อประสานแก้ไขปัญหาของฉันได้
ทำปุ่มของคุณประเภท - "กำหนดเอง" และยกเลิกการทำเครื่องหมาย - เน้นปรับภาพและคุณเสร็จแล้ว
หลีกเลี่ยงการตั้ง UIButton ของเส้นแบ่งที่จะClipใช้แทนมาตรฐานการตัดกลาง