2011-11-29 4 views
3

내 펜촉 파일에서 접근성을 활성화하고 텍스트 필드의 접근성 레이블을 "txt"로 설정했습니다 접근성 이름을 기반으로이 텍스트 파일을 찾고 해당 텍스트를 변경하려고합니다.iOS - UI 자동화는 접근성 라벨을 통해 텍스트 필드를 가져 옵니까?

var target = UIATarget.localTarget(); 
var application = target.frontMostApp(); 
var mainWindow = application.mainWindow(); 
mainWindow.logElementTree(); 

// This works 
var textField = mainWindow.textFields()[0]; 

//this doesn't work 
var textField = mainWindow.textFields()["txt"]; 

textField.setValue("Hello"); 

뭐가 잘못 되었나요? 내게 필요한 옵션 레이블을 기반으로 레이블을 찾는 방법은 무엇입니까?

편집 :

내가

+1

입니까? – jki

+0

코드에서 accessibilityLebel을 설정 한 후에 제대로 작동합니다. 하지만 인터페이스 빌더에서 설정 한 경우 작동하지 않는 이유는 무엇입니까? 세부 사항을 알려줄 수 있습니까? –

답변

5

나는 비슷한 문제와의 접근성 라벨 설정 값이 인덱스를 기반으로 텍스트 필드를 입지 않도록 노력하고,뿐만 아니라 다른 솔루션에 개방입니다 nib 파일 대신 코드를 사용하여 내 문제를 해결하십시오. 예를 들어 UIAutomation 스크립트에서 액세스해야하는 UITextField가 있는데 아래에 표시된대로 accessDeLoad 메서드에서 액세스 가능성 레이블 값을 설정해야합니다. 아래

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    testTxtField.accessibilityLabel = @"myTxtBox"; 
} 

과는에서든 logElementTree이 texfield 이름을 보여줍니다 무엇 내 UIAutomation 스크립트

var target = UIATarget.localTarget(); 
var application = target.frontMostApp(); 
var mainWindow = application.mainWindow(); 
mainWindow.logElementTree(); 

// This works 
//var textField = mainWindow.textFields()[0]; 

// Now, this work too. 
var textField = mainWindow.textFields()["myTxtBox"]; 
textField.setValue("Hello"); 

UIALogger.logMessage("Text field:" + textField.label()); 
관련 문제