2012-07-08 15 views
9

Chúng tôi có ứng dụng iPad bao gồm trình đọc tin tức hai cột. Khung nhìn bên trái chứa danh sách tin tức trong đó một số liên kết trực tiếp đến một tin tức và một số đẩy một bộ điều khiển xem khác với một danh sách tin tức khác. Điều này cũng sẽ gây ra một UIButton để được đặt làm leftBarButtonItem của thanh điều hướng. Nếu chúng ta ở cấp độ đầu tiên, một hình ảnh đơn giản mà không thể được khai thác sẽ là leftBarButtonItem.UIAutomation: Kiểm tra xem phần tử có tồn tại hay không trước khi nhấn

Mục tiêu của tôi bây giờ là có một bài kiểm tra nhấn vào mọi tin tức ở cấp độ đầu tiên. Nếu một tin tức dẫn đến một danh sách cấp độ thứ hai, nó sẽ chạm vào UIButton trong thanh điều hướng.

Tôi làm cách nào để kiểm tra, nếu leftBarButtonItem là "có thể truy cập"? Vì đó có thể là hình ảnh hoặc một nút, chỉ cần gọi navigationBar().leftButton().tap() sẽ dẫn đến lỗi nếu đó là hình ảnh.

Tôi cũng đang sử dụng thư viện điều chỉnh nếu đó là bất kỳ trợ giúp nào.

Trả lời

17

Hầu như tất cả các phần tử trong UIAutomation đều có thể được khai thác. Nó không quan trọng nếu nó là một hình ảnh, xem hoặc một nút. Bạn sẽ gặp lỗi trong trường hợp đối tượng bạn đang cố nhấn không hợp lệ. Làm thế nào để kiểm tra:

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

hoặc bạn có thể kiểm tra xem một đối tượng bạn đang cố gắng để khai thác là một nút, ví dụ (không phải là cách tốt nhất nhưng nó hoạt động):

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

checkIsValid () khả dụng cho tất cả các phần tử giao diện người dùng. Nó sẽ trả lại đúng nếu một đối tượng tồn tại. toString() sẽ trở lại [đối tượng UIAElementNil] nếu yếu tố không hợp lệ hoặc sẽ trở lại [đối tượng UIAButton] hoặc [đối tượng UIAImage].

Cũng cố gắng sử dụng của Apple tài liệu: http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Reference/UIAElementClassReference/UIAElement/UIAElement.html

0

Bạn chỉ có thể sử dụng

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