Estoy escribiendo algunas pruebas unitarias y, debido a la naturaleza de esta aplicación en particular, es importante que llegue lo más alto posible en la UI
cadena. Entonces, lo que me gustaría hacer es activar programáticamente la presión de un botón, como si el usuario hubiera presionado el botón en el GUI
.
(Sí, sí, podría llamar al IBAction
selector, pero, una vez más, la naturaleza de esta aplicación en particular hace que sea importante falsificar la presión del botón real, de modo que IBAction
se llame desde el botón mismo).
¿Cuál es el método preferido para hacer esto?
ios
iphone
uibutton
touch-event
Olie
fuente
fuente
Respuestas:
Resulta que
me consiguió exactamente lo que necesitaba, en este caso.
EDITAR: No olvide hacer esto en el hilo principal, para obtener resultados similares a los de una prensa de usuario.
Para Swift 3:
buttonObj.sendActions(for: .touchUpInside)
fuente
[myController myActionMethod:myButton1];
myActionMethod:
no es público, por lo que no puede llamarlo directamente.Una actualización de esta respuesta para Swift
EDITAR : actualizado para Swift 3
fuente
Si desea hacer este tipo de pruebas, le encantará el soporte de Automatización de la interfaz de usuario en iOS 4. Puede escribir JavaScript para simular presionar botones, etc. con bastante facilidad, aunque la documentación (especialmente la parte de inicio) es un poco escaso.
fuente
Swift 3:
fuente
En este caso,
UIButton
se deriva deUIControl
. Esto funciona para objetos derivados deUIControl
.Quería reutilizar "
UIBarButtonItem
" la acción en un caso de uso específico. Aquí,UIBarButtonItem
no ofrece métodosendActionsForControlEvents:
Pero afortunadamente,
UIBarButtonItem
tiene propiedades para el objetivo y la acción.Aquí,
rightBarButtonItem
es de tipoUIBarButtonItem
.fuente
Para Xamarin iOS
Referencia
fuente
Swift 4:
self .yourButton (self)
fuente