Je souhaite désactiver un bouton ( UIButton
) sur iOS après avoir cliqué dessus. Je suis nouveau dans le développement pour iOS mais je pense que le code équivalent sur l'objectif - C est le suivant:
button.enabled = NO;
Mais je ne pouvais pas faire ça rapidement.
Si vous voulez que le bouton reste statique sans l’apparence «enfoncé»:
Rappelles toi:
1) Vous êtes
IBOutlet
->@IBOutlet weak var editButton: UIButton!
2) Le code ci-dessus entre
viewWillAppear
la source
La façon dont je fais cela est la suivante:
L'IBAction est connecté à votre bouton dans le storyboard.
Si vous avez configuré votre bouton en tant que point de vente:
Ensuite, vous pouvez accéder aux propriétés activées en utilisant le. notation sur le nom du bouton:
la source
Désactivez un bouton sur Swift 3:
la source
Pour ceux qui ont googlé "désactiver un bouton" mais qui peuvent avoir des cas d'utilisation plus nuancés:
Désactiver avec effet visuel: comme d'autres l'ont dit, cela empêchera d'appuyer sur le bouton et le système le rendra automatiquement désactivé:
Désactiver sans effet visuel: utilisez-vous un bouton dans un cas où il devrait paraître normal mais ne pas se comporter comme le bouton J'aime en réagissant aux touches? Essaye ça!
Masquer sans désactiver: Cette approche masque le bouton sans le désactiver (invisible mais peut toujours être tapé):
Supprimer: cela supprimera complètement la vue:
Appuyez sur quelque chose derrière un bouton: avez deux boutons empilés et vous voulez que le bouton supérieur agisse temporairement comme s'il n'était pas là? Si vous n'avez plus besoin du bouton supérieur, supprimez-le. Si vous en avez besoin à nouveau, essayez de réduire sa hauteur ou sa largeur à 0!
la source
Vous pouvez activer / désactiver un bouton à l'aide de la propriété
isEnabled
ouisUserInteractionEnabled
.La différence entre deux est:
isEnabled
est une propriété de UIControl (super classe de UIButton) et il a des effets visuels (c'est-à-dire grisés) d'activation / désactivationisUserInteractionEnabled
est une propriété de UIView (super classe de UIControl) et n'a aucun effet visuel bien que mais atteint l'objectifUtilisation:
la source
Value of type '(AnyObject) -> ()' has no member 'isEnabled'
(_ sender: )
àUIButton
. L'erreur se lit comme suit:Value of type '(UIButton) -> ()' has no member 'isEnabled'
Disons que dans Swift 4, vous avez un bouton configuré pour une séquence
IBAction
comme ceci@IBAction func nextLevel(_ sender: UIButton) {}
et que d'autres actions se produisent dans votre application (c'est-à-dire une minuterie, un gamePlay, etc.). Plutôt que de désactiver le bouton segue, vous voudrez peut-être donner à votre utilisateur la possibilité d'utiliser ce segue pendant que les autres actions sont encore en cours et SANS CRASHING L'APPLICATION . Voici comment:Veuillez noter que vous aurez probablement d'autres conditions à l'intérieur
if appMode == 0
et / ouif appMode == 1
qui se produiront toujours et NON en conflit avec lemySegue
bouton. Ainsi, ÉVITER UN CRASH .la source
Le bouton peut être désactivé dans Swift 4 par le code
la source
Value of type '(AnyObject) -> ()' has no member 'isEnabled'
yourButton(sender: UIButton)
. Votre code mis à jour provoquera probablement l'erreur suivante:Value of type '(UIButton) -> ()' has no member 'isEnabled'