2012-07-08 36 views
9

Tenemos una aplicación para iPad que incluye un lector de noticias de dos columnas. La vista izquierda contiene la lista de noticias de las cuales algunas se vinculan directamente a una noticia y algunas llevan a otra controladora con otra lista de noticias. Esto también provocará que se establezca UIButton como leftBarButtonItem de la barra de navegación. Si estamos en el primer nivel, una imagen simple que no se puede tocar será leftBarButtonItem.UIAutomation: compruebe si el elemento existe antes de tocar

Mi objetivo ahora es tener una prueba que toque cada noticia en el primer nivel. Si una noticia lleva a una lista de segundo nivel, debe tocar el UIButton en la barra de navegación.

¿Cómo puedo comprobar si el leftBarButtonItem es "tappable"? Como puede ser un botón de imagen o, simplemente llamar al navigationBar().leftButton().tap() dará lugar a un error si se trata de una imagen.

También estoy usando la biblioteca de optimización si es de alguna ayuda.

Respuesta

17

Casi todos los elementos en UIAutomation podrían ser interceptados. No importa si se trata de una Imagen, una Vista o un Botón. Obtendrá un error en caso de que un objeto que está tratando de tocar no sea válido. ¿Cómo comprobar:

if (navigationBar().leftButton().checkIsValid()) 
{ 
    navigationBar().leftButton().tap(); 
} 
else 
{ 
    //do what you need. 
} 

o se puede comprobar si un objeto que está intentando tocar un botón, por ejemplo (no la mejor manera pero funciona):

if (navigationBar().leftButton().toString() == "[object UIAButton]") 
{ 
    navigationBar().leftButton().tap(); 
} 
else 
{ 
    //do what you need. 
} 

checkIsValid () está disponible para todos los elementos de la interfaz de usuario. Devolverá verdadero si existe un objeto. toString() volverá [objeto UIAElementNil] si el elemento no es válido o volverá [objeto UIAButton] o [objeto UIAImage].

también tratar de usar la documentación de Apple: http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Reference/UIAElementClassReference/UIAElement/UIAElement.html

0

simplemente Puede usar

if (navigationBar().leftButton().exists) 
{ 
    navigationBar().leftButton().tap(); 
} 
else 
{ 
    //do what you need. 
} 
Cuestiones relacionadas