Отключить кнопку

Я хочу отключить кнопку (UIButton) на iOS после ее нажатия. Я новичок в разработке для iOS, но я думаю, что эквивалентный код на объективе - C:

button.enabled = NO;

Но я не мог этого сделать быстро.

Ответ 1

Логическое значение для NO в Swift - false.

button.isEnabled = false

должен это сделать.

Здесь - документация Swift для свойства UIControl isEnabled.

Ответ 2

Если вы хотите, чтобы кнопка оставалась неподвижной без "нажатого" вида:

// Swift 2
editButton.userInteractionEnabled = false 

// Swift 3
editButton.isUserInteractionEnabled = false 

Помните:

1) Ваш IBOutlet - → @IBOutlet weak var editButton: UIButton!

2) Код выше находится в viewWillAppear

Ответ 3

Как я это делаю:

@IBAction func pressButton(sender: AnyObject) {
    var disableMyButton = sender as? UIButton
    disableMyButton.enabled = false
}

IBAction подключен к вашей кнопке в раскадровке.

Если у вас установлена ​​ваша кнопка в качестве выхода:

    @IBOutlet weak var myButton: UIButton!

Затем вы можете получить доступ к включенным свойствам с помощью. обозначение имени кнопки:

    myButton.enabled = false

Ответ 4

Отключите кнопку Swift 3:

yourButton.isEnabled = false

Ответ 5

Отключить кнопку в Swift 4 можно по коду

@IBAction func yourButtonMethodname(sender: UIButon) {
 yourButton.isEnabled = false 
}

Ответ 6

Вы можете включить/отключить кнопку, используя свойство isEnabled или isUserInteractionEnabled.

Разница между двумя:

  • isEnabled является свойством UIControl (суперкласс UIButton) и имеет визуальные эффекты (то есть выделенные серым цветом) включения/выключения

  • isUserInteractionEnabled является свойством UIView (суперкласса UIControl) и не имеет визуального эффекта, но достигает цели

Использование :

myButton.isEnabled = false // Recommended approach

myButton.isUserInteractionEnabled = false // Alternative approach

Ответ 7

Допустим, в 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. Таким образом, избегая столкновения.

Ответ 8

Для тех, кто Googled "отключил кнопку", но может иметь более тонкие варианты использования:

Отключить с визуальным эффектом: как уже говорили другие, это предотвратит нажатие кнопки, и система автоматически сделает ее отключенной:

yourButton.isEnabled = false 

Отключить без визуального эффекта. Используете ли вы кнопку в том случае, если она должна выглядеть нормально, но не реагирует на прикосновения? Попробуй это!

yourButton.userInteractionEnabled = false

Скрыть без отключения: этот подход скрывает кнопку, не отключая ее (невидимо, но все же можно нажать):

 yourButton.alpha = 0.0

Удалить: Это полностью удалит представление:

 yourButton.removeFromSuperView()

Нажмите что-нибудь за кнопкой: две кнопки сложены, и вы хотите, чтобы верхняя кнопка временно работала так, как будто ее там нет? Если вам больше не понадобится верхняя кнопка, удалите ее. Если вам это понадобится снова, попробуйте уменьшить его высоту или ширину до 0!