Я хочу отключить кнопку (UIButton
) на iOS после ее нажатия. Я новичок в разработке для iOS, но я думаю, что эквивалентный код на объективе - C:
button.enabled = NO;
Но я не мог этого сделать быстро.
Я хочу отключить кнопку (UIButton
) на iOS после ее нажатия. Я новичок в разработке для iOS, но я думаю, что эквивалентный код на объективе - C:
button.enabled = NO;
Но я не мог этого сделать быстро.
Логическое значение для NO
в Swift - false
.
button.isEnabled = false
должен это сделать.
Здесь - документация Swift для свойства 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 подключен к вашей кнопке в раскадровке.
Если у вас установлена ваша кнопка в качестве выхода:
@IBOutlet weak var myButton: UIButton!
Затем вы можете получить доступ к включенным свойствам с помощью. обозначение имени кнопки:
myButton.enabled = false
Отключите кнопку Swift 3:
yourButton.isEnabled = false
Отключить кнопку в Swift 4 можно по коду
@IBAction func yourButtonMethodname(sender: UIButon) {
yourButton.isEnabled = false
}
Вы можете включить/отключить кнопку, используя свойство isEnabled
или isUserInteractionEnabled
.
Разница между двумя:
isEnabled
является свойством UIControl (суперкласс UIButton) и имеет визуальные эффекты (то есть выделенные серым цветом) включения/выключения
isUserInteractionEnabled
является свойством UIView (суперкласса UIControl) и не имеет визуального эффекта, но достигает цели
Использование :
myButton.isEnabled = false // Recommended approach
myButton.isUserInteractionEnabled = false // Alternative approach
Допустим, в Swift 4 у вас есть кнопка, настроенная для перехода в качестве IBAction
например, @IBAction func nextLevel(_ sender: UIButton) {}
и у вас есть другие действия, происходящие в вашем приложении (например, таймер, gamePlay и т.д.), Вместо того, чтобы отключать кнопку перехода, вы можете захотеть дать своему пользователю возможность использовать этот переход, пока другие действия все еще происходят и БЕЗ СБОРА ПРИЛОЖЕНИЯ. Вот как:
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
. Таким образом, избегая столкновения.
Для тех, кто Googled "отключил кнопку", но может иметь более тонкие варианты использования:
Отключить с визуальным эффектом: как уже говорили другие, это предотвратит нажатие кнопки, и система автоматически сделает ее отключенной:
yourButton.isEnabled = false
Отключить без визуального эффекта. Используете ли вы кнопку в том случае, если она должна выглядеть нормально, но не реагирует на прикосновения? Попробуй это!
yourButton.userInteractionEnabled = false
Скрыть без отключения: этот подход скрывает кнопку, не отключая ее (невидимо, но все же можно нажать):
yourButton.alpha = 0.0
Удалить: Это полностью удалит представление:
yourButton.removeFromSuperView()
Нажмите что-нибудь за кнопкой: две кнопки сложены, и вы хотите, чтобы верхняя кнопка временно работала так, как будто ее там нет? Если вам больше не понадобится верхняя кнопка, удалите ее. Если вам это понадобится снова, попробуйте уменьшить его высоту или ширину до 0!