He agregado múltiples target-action-forControlEvents: a un UIButton. Me gustaría eliminar todo esto de una vez sin desasignar nada. Luego estableceré nuevos objetivos.
¿Es esto posible y cómo lo hago?
Llame a removeTarget: action: forControlEvents:, pase nil para el destino, NULL para la acción y use una máscara de control que establezca todos los bits (UIControlEventAllEvents).
C objetivo
[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)
La respuesta de @progrmr en Swift 2:
y Swift 3:
Nota: Swift no tiene
NULL
, así que probé reemplazarlonil
y parece funcionar bien.fuente
removeTarget(nil, action: nil, for: .allEvents)
nil
oNULL
de ambas la primera y segunda argumentos en Objective-C también, y va a trabajar. Creo que ambos se definen como(void*) 0
(o al menos, evaluar como iguales).Rápido:
fuente
Swift 2:
Swift 3 y 4:
C objetivo:
Espero eso ayude.
fuente
Este método detiene la entrega de eventos al objeto de destino especificado.
Al especificar un objeto válido en el parámetro de destino, este método detiene la entrega de los eventos especificados a todos los métodos de acción asociados con ese objeto.
Al especificar nil para el parámetro de destino, este método evita la entrega de esos eventos a todos los métodos de acción de todos los objetos de destino
C objetivo:
rápido:
Para más detalles https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIControl_Class/index.html#//apple_ref/occ/instm/UIControl/removeTarget:action:forControlEvents :
fuente