İOS'ta bir düğmeyi ( UIButton
) tıklandıktan sonra devre dışı bırakmak istiyorum . İOS için geliştirme konusunda yeniyim ama sanırım hedefteki eşdeğer kod - C şudur:
button.enabled = NO;
Ama bunu hızlı yapamazdım.
İOS'ta bir düğmeyi ( UIButton
) tıklandıktan sonra devre dışı bırakmak istiyorum . İOS için geliştirme konusunda yeniyim ama sanırım hedefteki eşdeğer kod - C şudur:
button.enabled = NO;
Ama bunu hızlı yapamazdım.
Yanıtlar:
NO
Swift için boole değeri false
.
button.isEnabled = false
yapmalı.
İşte için Swift dokümantasyonudur UIControl
bireyin isEnabled
mülkiyet.
Düğmenin "basılı" görünüm olmadan sabit kalmasını istiyorsanız:
// Swift 2
editButton.userInteractionEnabled = false
// Swift 3
editButton.isUserInteractionEnabled = false
Hatırlamak:
1) Sizin IBOutlet
->@IBOutlet weak var editButton: UIButton!
2) Yukarıdaki kod giriliyor viewWillAppear
Bunu yapmamın yolu şu:
@IBAction func pressButton(sender: AnyObject) {
var disableMyButton = sender as? UIButton
disableMyButton.enabled = false
}
IBAction, film şeridindeki düğmenize bağlanır.
Bir Outlet olarak düğme ayarınız varsa:
@IBOutlet weak var myButton: UIButton!
Ardından, etkinleştirilen mülklere. düğme adındaki not:
myButton.enabled = false
Swift 3'te bir düğmeyi devre dışı bırakın:
yourButton.isEnabled = false
Google'da "bir düğmeyi devre dışı bırak" yapanlar, ancak daha ayrıntılı kullanım durumları olabilecekler için:
Görsel efektle devre dışı bırakın : Diğerlerinin de söylediği gibi, bu, düğmeye basılmasını önleyecek ve sistem otomatik olarak devre dışı görünmesini sağlayacaktır:
yourButton.isEnabled = false
Görsel efekt olmadan devre dışı bırakın: Normal görünmesi ancak dokunuşlara tepki vererek beğenme düğmesi gibi davranmaması gereken bir durumda bir düğme kullanıyor musunuz? Bunu dene!
yourButton.userInteractionEnabled = false
Devre dışı bırakmadan gizle: Bu yaklaşım, düğmeyi devre dışı bırakmadan gizler (görünmez, ancak yine de dokunulabilir):
yourButton.alpha = 0.0
Kaldır: Bu, görünümü tamamen kaldırır:
yourButton.removeFromSuperView()
Bir düğmenin arkasındaki bir şeye dokunun: Üst üste iki düğme var ve üst düğmenin geçici olarak orada yokmuş gibi davranmasını mı istiyorsunuz? Üst düğmeye tekrar ihtiyacınız olmayacaksa onu kaldırın. Tekrar ihtiyacınız olursa, yüksekliğini veya genişliğini 0'a sıkıştırmayı deneyin!
isEnabled
Veya isUserInteractionEnabled
özelliğini kullanarak bir düğmeyi etkinleştirebilir / devre dışı bırakabilirsiniz .
İkisi arasındaki fark şudur:
isEnabled
UIControl'ün (süper UIButton sınıfı) bir özelliğidir ve etkinleştirme / devre dışı bırakma görsel efektlerine (yani gri renkte) sahiptir
isUserInteractionEnabled
UIView'un (süper UIControl sınıfı) bir özelliğidir ve amaca ulaşmasına rağmen görsel bir etkisi yoktur
Kullanım:
myButton.isEnabled = false // Recommended approach
myButton.isUserInteractionEnabled = false // Alternative approach
Value of type '(AnyObject) -> ()' has no member 'isEnabled'
Diyelim ki Swift 4'te buna IBAction
benzer bir bölüm için ayarlanmış bir düğme @IBAction func nextLevel(_ sender: UIButton) {}
var ve uygulamanızda gerçekleşen başka eylemleriniz var (örneğin bir zamanlayıcı, gamePlay, vb.). Segue düğmesini devre dışı bırakmak yerine, kullanıcınıza o segmenti diğer eylemler devam ederken ve UYGULAMAYI KAPATMADAN kullanma seçeneği vermek isteyebilirsiniz . Bunu nasıl yapacağınız aşağıda açıklanmıştır:
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
}
}
Lütfen içinde başka koşullara sahip olacağınızı if appMode == 0
ve / veya if appMode == 1
yine de meydana geleceğini ve mySegue
düğmeyle çelişmediğini unutmayın . Böylece, ÇARPIŞMAYI ÖNLEMEK .
Düğme Swift 4'te kod ile Devre Dışı Bırakılabilir
@IBAction func yourButtonMethodname(sender: UIButon) {
yourButton.isEnabled = false
}