titlelabel guidelines color buttons iphone uibutton touch-event

iphone - guidelines - menu ios



¿Cómo falsificar mediante programación un evento táctil a un UIButton? (6)

Estoy escribiendo algunas pruebas de unidad y, debido a la naturaleza de esta aplicación en particular, es importante que llegue lo más alto posible en la cadena de UI . Entonces, lo que me gustaría hacer es activar programáticamente una pulsación de botón, como si el usuario hubiera presionado el botón en la GUI .

(Sí, sí, podría llamar al selector IBAction pero, una vez más, la naturaleza de esta aplicación particular hace que sea importante que IBAction la IBAction real del botón, de modo que se IBAction al IBAction desde el botón).

¿Cuál es el método preferido para hacer esto?


En este caso, UIButton se deriva de UIControl . Esto funciona para objetos derivados de UIControl .

Quería reutilizar la acción " UIBarButtonItem " en un caso de uso específico. Aquí, UIBarButtonItem no ofrece el método sendActionsForControlEvents:

Pero afortunadamente, UIBarButtonItem tiene propiedades para target & action.

if(notHappy){ SEL exit = self.navigationItem.rightBarButtonItem.action; id world = self.navigationItem.rightBarButtonItem.target; [world performSelector:exit]; }

Aquí, rightBarButtonItem es de tipo UIBarButtonItem .


Para Xamarin iOS

btnObj.SendActionForControlEvents(UIControlEvent.TouchUpInside);

Reference


Resulta que

[buttonObj sendActionsForControlEvents: UIControlEventTouchUpInside];

me consiguió exactamente lo que necesitaba, en este caso.

EDITAR: no olvides hacer esto en el hilo principal, para obtener resultados similares a una pulsación del usuario.

Para Swift 3:

buttonObj.sendActions(for: .touchUpInside)


Si desea realizar este tipo de pruebas, le encantará el soporte de automatización de UI en iOS 4. Puede escribir JavaScript para simular pulsaciones de botones, etc. con bastante facilidad, aunque la documentación (especialmente la parte de inicio) es un poco escaso.


Swift 3:

self.btn.sendActions(for: .touchUpInside)


Una actualización de esta respuesta para Swift

buttonObj.sendActionsForControlEvents(.TouchUpInside)

EDITAR : Actualizado para Swift 3

buttonObj.sendActions(for: .touchUpInside)