J'ai ajouté plusieurs target-action-forControlEvents: à un UIButton. Je voudrais supprimer tout cela en une seule fois sans rien désallouer. Je fixerai alors de nouveaux objectifs.
Est-ce possible et comment procéder?
Appelez removeTarget: action: forControlEvents:, passez nil pour la cible, NULL pour action et utilisez un masque de contrôle qui définit tous les bits (UIControlEventAllEvents).
Objectif c
[someControl removeTarget:nil
action:NULL
forControlEvents:UIControlEventAllEvents];
Swift 2
button.removeTarget(nil, action: nil, forControlEvents: .AllEvents)
Swift 3
button.removeTarget(nil, action: nil, for: .allEvents)
Réponse de @ progrmr dans Swift 2:
et Swift 3:
Remarque: Swift ne l'a pas
NULL
, j'ai donc testé le remplacer parnil
et cela semble fonctionner correctement.la source
removeTarget(nil, action: nil, for: .allEvents)
nil
ouNULL
à la fois les premier et deuxième arguments en Objective-C aussi, et cela fonctionnera. Je crois que les deux sont définis comme(void*) 0
(ou à tout le moins, évalués comme égaux).Rapide:
la source
Swift 2:
Swift 3 & 4:
Objectif c:
J'espère que ça aide.
la source
Cette méthode arrête la remise des événements à l'objet cible spécifié.
En spécifiant un objet valide dans le paramètre cible, cette méthode arrête la livraison des événements spécifiés à toutes les méthodes d'action associées à cet objet.
Spécifiant nil pour le paramètre cible, cette méthode empêche la livraison de ces événements à toutes les méthodes d'action de tous les objets cibles
objectif c:
rapide:
Pour plus de détails https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIControl_Class/index.html#//apple_ref/occ/instm/UIControl/removeTarget:action:forControlEvents :
la source