Saya ingin menonaktifkan tombol ( UIButton
) di iOS setelah diklik. Saya baru dalam pengembangan untuk iOS tetapi saya pikir kode yang setara pada objektif - C adalah ini:
button.enabled = NO;
Tapi aku tidak bisa melakukannya dengan cepat.
Saya ingin menonaktifkan tombol ( UIButton
) di iOS setelah diklik. Saya baru dalam pengembangan untuk iOS tetapi saya pikir kode yang setara pada objektif - C adalah ini:
button.enabled = NO;
Tapi aku tidak bisa melakukannya dengan cepat.
Jawaban:
Nilai boolean NO
di Swift adalah false
.
button.isEnabled = false
harus melakukannya.
Berikut adalah dokumentasi Swift untuk UIControl
's isEnabled
properti.
Jika Anda ingin tombol tetap statis tanpa tampilan "ditekan":
// Swift 2
editButton.userInteractionEnabled = false
// Swift 3
editButton.isUserInteractionEnabled = false
Ingat:
1) Anda IBOutlet
->@IBOutlet weak var editButton: UIButton!
2) Kode di atas masuk viewWillAppear
Cara saya melakukan ini adalah sebagai berikut:
@IBAction func pressButton(sender: AnyObject) {
var disableMyButton = sender as? UIButton
disableMyButton.enabled = false
}
IBAction terhubung ke tombol Anda di storyboard.
Jika Anda memiliki pengaturan tombol sebagai Outlet:
@IBOutlet weak var myButton: UIButton!
Kemudian Anda dapat mengakses properti yang diaktifkan dengan menggunakan. notasi pada nama tombol:
myButton.enabled = false
Nonaktifkan tombol di Swift 3:
yourButton.isEnabled = false
Bagi mereka yang mencari "tombol nonaktifkan" di Google tetapi mungkin memiliki kasus penggunaan yang lebih bernuansa:
Nonaktifkan dengan efek visual: Seperti yang dikatakan orang lain, ini akan mencegah tombol ditekan dan sistem akan secara otomatis membuatnya tampak dinonaktifkan:
yourButton.isEnabled = false
Nonaktifkan tanpa efek visual: Apakah Anda menggunakan tombol dalam kasus di mana seharusnya terlihat normal tetapi tidak berperilaku tombol suka dengan bereaksi terhadap sentuhan? Coba ini!
yourButton.userInteractionEnabled = false
Sembunyikan tanpa menonaktifkan: Pendekatan ini menyembunyikan tombol tanpa menonaktifkannya (tidak terlihat tetapi masih dapat diketuk):
yourButton.alpha = 0.0
Hapus: Ini akan menghapus tampilan seluruhnya:
yourButton.removeFromSuperView()
Ketuk sesuatu di belakang tombol: Apakah dua tombol telah ditumpuk dan Anda ingin tombol atas berfungsi sementara seolah-olah tidak ada? Jika Anda tidak membutuhkan tombol atas lagi, lepaskan. Jika Anda akan membutuhkannya lagi, cobalah memadatkan tinggi atau lebarnya menjadi 0!
Anda dapat mengaktifkan / menonaktifkan tombol menggunakan isEnabled
atau isUserInteractionEnabled
properti.
Perbedaan antara keduanya adalah:
isEnabled
adalah milik UIControl (kelas super UIButton) dan memiliki efek visual (yaitu berwarna abu-abu) untuk mengaktifkan / menonaktifkan
isUserInteractionEnabled
adalah properti UIView (kelas super UIControl) dan tidak memiliki efek visual meskipun tetapi mencapai tujuannya
Penggunaan:
myButton.isEnabled = false // Recommended approach
myButton.isUserInteractionEnabled = false // Alternative approach
Value of type '(AnyObject) -> ()' has no member 'isEnabled'
Katakanlah di Swift 4 Anda memiliki tombol yang diatur untuk segue IBAction
seperti ini @IBAction func nextLevel(_ sender: UIButton) {}
dan Anda memiliki tindakan lain yang terjadi dalam aplikasi Anda (yaitu timer, gamePlay, dll.). Daripada menonaktifkan tombol segue, Anda mungkin ingin memberi pengguna Anda opsi untuk menggunakan segue itu sementara tindakan lain masih terjadi dan TANPA MENGHANCURKAN APLIKASI . Begini caranya:
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
}
}
Harap dicatat bahwa Anda mungkin memiliki kondisi lain di dalam if appMode == 0
dan / atau if appMode == 1
yang masih akan terjadi dan TIDAK bertentangan dengan mySegue
tombol. Jadi, MENGHINDARI KESALAHAN .
Tombol tersebut dapat Dinonaktifkan di Swift 4 dengan kode
@IBAction func yourButtonMethodname(sender: UIButon) {
yourButton.isEnabled = false
}
Value of type '(AnyObject) -> ()' has no member 'isEnabled'