Quiero deshabilitar un botón ( UIButton
) en iOS después de hacer clic en él. Soy nuevo en el desarrollo para iOS, pero creo que el código equivalente en el objetivo - C es este:
button.enabled = NO;
Pero no pude hacer eso en Swift.
Quiero deshabilitar un botón ( UIButton
) en iOS después de hacer clic en él. Soy nuevo en el desarrollo para iOS, pero creo que el código equivalente en el objetivo - C es este:
button.enabled = NO;
Pero no pude hacer eso en Swift.
Respuestas:
El valor booleano de NO
Swift es false
.
button.isEnabled = false
Deberías hacerlo.
Aquí está la documentación de Swift para UIControl
la isEnabled
propiedad de.
Si desea que el botón permanezca estático sin la apariencia de "presionado":
// Swift 2
editButton.userInteractionEnabled = false
// Swift 3
editButton.isUserInteractionEnabled = false
Recuerda:
1) Tu IBOutlet
es ->@IBOutlet weak var editButton: UIButton!
2) El código anterior va en viewWillAppear
La forma en que hago esto es la siguiente:
@IBAction func pressButton(sender: AnyObject) {
var disableMyButton = sender as? UIButton
disableMyButton.enabled = false
}
La IBAction está conectada a su botón en el guión gráfico.
Si tiene su botón configurado como un Outlet:
@IBOutlet weak var myButton: UIButton!
Luego puede acceder a las propiedades habilitadas usando el. notación en el nombre del botón:
myButton.enabled = false
Desactive un botón en Swift 3:
yourButton.isEnabled = false
Para aquellos que buscaron en Google "deshabilitar un botón" pero pueden tener casos de uso más matizados:
Deshabilitar con efecto visual: como han dicho otros, esto evitará que se presione el botón y el sistema automáticamente lo hará parecer deshabilitado:
yourButton.isEnabled = false
Desactivar sin efecto visual: ¿Estás usando un botón en un caso en el que debería verse normal pero no comportarse como el botón Me gusta al reaccionar a los toques? ¡Prueba esto!
yourButton.userInteractionEnabled = false
Ocultar sin deshabilitar: este enfoque oculta el botón sin deshabilitarlo (invisible pero aún se puede tocar):
yourButton.alpha = 0.0
Eliminar: esto eliminará la vista por completo:
yourButton.removeFromSuperView()
Toque algo detrás de un botón: ¿Tiene dos botones apilados y desea que el botón superior actúe temporalmente como si no estuviera allí? Si no necesita el botón superior nuevamente, quítelo. Si lo necesitará de nuevo, intente condensar su altura o ancho a 0.
Puede habilitar / deshabilitar un botón usando isEnabled
oisUserInteractionEnabled
propiedad .
La diferencia entre dos es:
isEnabled
es una propiedad de UIControl (superclase de UIButton) y tiene efectos visuales (es decir, atenuados) de habilitar / deshabilitar
isUserInteractionEnabled
es una propiedad de UIView (superclase de UIControl) y no tiene efecto visual, pero logra el propósito
Uso:
myButton.isEnabled = false // Recommended approach
myButton.isUserInteractionEnabled = false // Alternative approach
Digamos que en Swift 4 tienes un botón configurado para una transición como IBAction
esta @IBAction func nextLevel(_ sender: UIButton) {}
y tienes otras acciones que ocurren dentro de tu aplicación (es decir, un temporizador, gamePlay, etc.). En lugar de deshabilitar el botón de segue, es posible que desee darle a su usuario la opción de usar ese segue mientras las otras acciones aún están ocurriendo y SIN APLICAR CERRAR LA APLICACIÓN . Así es cómo:
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
}
}
Tenga en cuenta que es probable que tenga otras condiciones dentro if appMode == 0
y / o if appMode == 1
que aún ocurran y NO entren en conflicto con el mySegue
botón. Por lo tanto, EVITAR UN CHOQUE .
El botón se puede desactivar en Swift 4 mediante el código
@IBAction func yourButtonMethodname(sender: UIButon) {
yourButton.isEnabled = false
}
Value of type '(AnyObject) -> ()' has no member 'isEnabled'