Я хочу відключити кнопку ( UIButton
) на iOS після натискання. Я новачок у розробці для iOS, але я думаю, що еквівалентний код за ціллю - C такий:
button.enabled = NO;
Але я не міг зробити це швидко.
Я хочу відключити кнопку ( UIButton
) на iOS після натискання. Я новачок у розробці для iOS, але я думаю, що еквівалентний код за ціллю - C такий:
button.enabled = NO;
Але я не міг зробити це швидко.
Відповіді:
Логічне значення для NO
Swift дорівнює false
.
button.isEnabled = false
повинен це зробити.
Ось це документація Swift для UIControl
«S 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 підключений до вашої кнопки в раскадровці.
Якщо ви налаштували кнопку як розетку:
@IBOutlet weak var myButton: UIButton!
Тоді ви зможете отримати доступ до включених властивостей за допомогою. позначення назви кнопки:
myButton.enabled = false
Вимкніть кнопку на Swift 3:
yourButton.isEnabled = false
Для тих, хто погуглив "вимкнути кнопку", але може мати більше нюансів використання:
Вимкнути за допомогою візуального ефекту: Як казали інші, це не дозволить натискати кнопку, і система автоматично зробить її вимкненою:
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'
Скажімо, у Swift 4 у вас є кнопка, налаштована на сегу як IBAction
подібну, @IBAction func nextLevel(_ sender: UIButton) {}
і у вас є інші дії, що відбуваються у вашому додатку (тобто таймер, gamePlay тощо). Замість того, щоб відключити кнопку segue, ви можете надати користувачеві можливість використовувати цю segue, поки інші дії все ще відбуваються і БЕЗ ЗБІВАННЯ ДОДАТКА . Ось як:
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'