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.UIButton eliminar todas las acciones de destino
¿Es esto posible y cómo lo hago?
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.UIButton eliminar todas las acciones de destino
¿Es esto posible y cómo lo hago?
Llamar removeTarget:action:forControlEvents:, pasar nil para el destino, NULL para la acción, y usar una máscara de control que establece todos los bits (UIControlEventAllEvents).
Objective-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)
@ respuesta de progrmr en Swift 2:
button.removeTarget(nil, action: nil, forControlEvents: .AllEvents)
y Swift 3:
button.removeTarget(nil, action: nil, for: .allEvents)
Nota: Swift no tiene NULL
, así que probó su sustitución por nil
y parece que funciona bien.
Para Swift 3: ".AllEvents" ahora es ".allEvents" (con una 'a' minúscula): 'removeTarget (nil, action: nil, for: .allEvents)' – Sasho
En cuanto a su NOTA: En realidad, le creo podría pasar 'nil' o' NULL' a ** ambos ** los argumentos primero y segundo en Objective-C también, y funcionará. Creo que ambos se definen como '(void *) 0' (o al menos, se evalúan como iguales). –
@Sasho Me encantaría ver algunas estadísticas sobre cuánto descienden los tamaños de los archivos fuente (en promedio) al actualizar a Swift 3 :-) (debido a las nuevas reglas de denominación de método/argumento). –
Swift:
btnCancel.removeTarget(self, action: Selector(), forControlEvents: UIControlEvents.AllEvents)
indique el idioma que cubre –
@ JuanPabloBoero, es rápido – Iya
- removeTarget:action:forControlEvents:
Este método se detiene la entrega de eventos al objeto de destino especificado.
Especificación de un objeto válido en el parámetro objetivo, este método se detiene la entrega de los eventos especificados a todos los métodos de acción asociados con ese objeto.
Especificación nil para el parámetro objetivo, este método evita la entrega de esos eventos a todos los métodos de acción de todos los objetos de destino
objetivo-c:
[_myButton removeTarget: //any validObject (or) nil
action:nil
forControlEvents:UIControlEventAllEvents];
rápido:
myButton.removeTarget(*validObject or nil*, action:nil, forControlEvents:UIControlEvents.AllEvents)
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:
¡Gracias por la sugerencia! Aquí está el enlace completo, creo (es decir, a la sección): "http://developer.apple.com/iphone/library/documentation/uikit/reference/UIControl_Class/Reference/Reference.html#//apple_ref/occ/instm/UIControl/removeTarget: action: forControlEvents: " – SK9
La sugerencia del progrmr funciona, por supuesto.Para agregar a la respuesta aquí hay un fragmento de código como el que necesitaba: [button removeTarget: nil acción: NULL forControlEvents: UIControlEventTouchUpInside]; – SK9
Aparte: el método de instancia -todos losTargets devuelve un NSSet de todos los destinos de la instancia (nada si ninguno). – SK9