Я хочу отключить кнопку ( 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
Скажем, в 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
кнопкой. Таким образом, ИЗБЕЖАНИЕ АВАРИИ .
Отключить кнопку в Swift 4 можно с помощью кода
@IBAction func yourButtonMethodname(sender: UIButon) {
yourButton.isEnabled = false
}
Value of type '(AnyObject) -> ()' has no member 'isEnabled'