ฉันต้องการปิดการใช้งานปุ่ม ( UIButton
) บน iOS หลังจากที่คลิกแล้ว ฉันยังใหม่กับการพัฒนาสำหรับ iOS แต่ฉันคิดว่ารหัสที่เทียบเท่าตามวัตถุประสงค์ - C คือสิ่งนี้:
button.enabled = NO;
แต่ฉันไม่สามารถทำได้อย่างรวดเร็ว
ฉันต้องการปิดการใช้งานปุ่ม ( UIButton
) บน iOS หลังจากที่คลิกแล้ว ฉันยังใหม่กับการพัฒนาสำหรับ iOS แต่ฉันคิดว่ารหัสที่เทียบเท่าตามวัตถุประสงค์ - C คือสิ่งนี้:
button.enabled = NO;
แต่ฉันไม่สามารถทำได้อย่างรวดเร็ว
คำตอบ:
ค่าบูลีนสำหรับในสวิฟท์NO
false
button.isEnabled = false
ควรทำ
นี่เป็นเอกสารสวิฟท์สำหรับUIControl
ของisEnabled
สถานที่ให้บริการ
หากคุณต้องการให้ปุ่มอยู่นิ่งโดยไม่มีลักษณะ "กด":
// Swift 2
editButton.userInteractionEnabled = false
// Swift 3
editButton.isUserInteractionEnabled = false
จำไว้ว่า:
1) ของคุณIBOutlet
คือ ->@IBOutlet weak var editButton: UIButton!
2) รหัสด้านบนเข้าไป viewWillAppear
วิธีที่ฉันทำมีดังนี้:
@IBAction func pressButton(sender: AnyObject) {
var disableMyButton = sender as? UIButton
disableMyButton.enabled = false
}
IBAction เชื่อมต่อกับปุ่มของคุณในกระดานเรื่องราว
หากคุณตั้งค่าปุ่มเป็น Outlet:
@IBOutlet weak var myButton: UIButton!
จากนั้นคุณสามารถเข้าถึงคุณสมบัติที่เปิดใช้งานโดยใช้ไฟล์. สัญกรณ์บนชื่อปุ่ม:
myButton.enabled = false
ปิดการใช้งานปุ่มบน Swift 3:
yourButton.isEnabled = false
สำหรับผู้ที่ Googled "ปิดการใช้งานปุ่ม" แต่อาจมีกรณีการใช้งานที่เหมาะสมกว่า:
ปิดการใช้งานด้วยเอฟเฟกต์ภาพ:ตามที่คนอื่น ๆ กล่าวไว้วิธีนี้จะป้องกันไม่ให้กดปุ่มและระบบจะปิดใช้งานโดยอัตโนมัติ:
yourButton.isEnabled = false
ปิดใช้งานโดยไม่มีเอฟเฟกต์ภาพ:คุณใช้ปุ่มในกรณีที่ควรดูปกติ แต่ไม่ทำงานปุ่มไลค์โดยตอบสนองต่อการสัมผัส ลองดูสิ!
yourButton.userInteractionEnabled = false
ซ่อนโดยไม่ปิดใช้งาน:วิธีนี้จะซ่อนปุ่มโดยไม่ปิดใช้งาน (มองไม่เห็น แต่ยังสามารถแตะได้):
yourButton.alpha = 0.0
ลบ:สิ่งนี้จะลบมุมมองทั้งหมด:
yourButton.removeFromSuperView()
แตะบางสิ่งที่อยู่ด้านหลังปุ่ม:มีปุ่มสองปุ่มซ้อนกันและคุณต้องการให้ปุ่มบนสุดทำหน้าที่ชั่วคราวเหมือนไม่มีอยู่ หากคุณไม่ต้องการปุ่มบนสุดอีกให้นำออก หากคุณต้องการอีกครั้งให้ลองย่อความสูงหรือความกว้างเป็น 0!
คุณสามารถเปิด / ปิดการใช้งานปุ่มโดยใช้isEnabled
หรือisUserInteractionEnabled
คุณสมบัติ
ความแตกต่างระหว่างสองคือ:
isEnabled
เป็นคุณสมบัติของ UIControl (ซุปเปอร์คลาสของ UIButton) และมีเอฟเฟกต์ภาพ (เช่นเป็นสีเทา)ของการเปิด / ปิด
isUserInteractionEnabled
เป็นสมบัติของ UIView (ซูเปอร์คลาสของ UIControl) และไม่มีเอฟเฟกต์ภาพแม้ว่าจะบรรลุวัตถุประสงค์
การใช้งาน:
myButton.isEnabled = false // Recommended approach
myButton.isUserInteractionEnabled = false // Alternative approach
Value of type '(AnyObject) -> ()' has no member 'isEnabled'
สมมติว่าในสวิฟท์ 4 คุณมีปุ่มตั้งค่าสำหรับการทำต่อเป็นIBAction
เช่นนี้@IBAction func nextLevel(_ sender: UIButton) {}
และคุณมีการกระทำอื่น ๆ ที่เกิดขึ้นภายในแอปของคุณ (เช่นการจับเวลา, เล่นเกม, ฯลฯ ) แทนที่จะปิดการใช้งานปุ่มทำต่อคุณอาจต้องการที่จะให้ผู้ใช้ของคุณเลือกที่จะใช้ทำต่อว่าในขณะที่การดำเนินการอื่น ๆ ยังคงเกิดขึ้นและไม่ crashing APP ที่ วิธีการมีดังนี้
var appMode = 0
@IBAction func mySegue(_ sender: UIButton) {
if appMode == 1 { // avoid crash if button pressed during other app actions and/or conditions
let conflictingAction = sender as UIButton
conflictingAction.isEnabled = false
}
}
โปรดทราบว่าคุณอาจมีเงื่อนไขอื่น ๆ ภายในif appMode == 0
และ / หรือif appMode == 1
ที่จะยังคงเกิดขึ้นและไม่ขัดแย้งกับmySegue
ปุ่ม ดังนั้นหลีกเลี่ยงความผิดพลาด
ปุ่มนี้สามารถปิดการใช้งานใน Swift 4 ได้ด้วยรหัส
@IBAction func yourButtonMethodname(sender: UIButon) {
yourButton.isEnabled = false
}
Value of type '(AnyObject) -> ()' has no member 'isEnabled'
เพื่อให้สิ่งนี้ใช้งานได้:
yourButton.isEnabled = false
คุณต้องสร้างร้านนอกเหนือจากปุ่ม UI ของคุณ
สมัยนี้ทำแบบนี้แล้ว
Button(action: action) {
Text(buttonLabel)
}
.disabled(!isEnabled)