2010-12-02 9 views
2

Ich habe eine benutzerdefinierte Tabellenansichtszelle, in der die Details einer Telefonkonferenz angezeigt werden. Der Körper der Konstrukteurs-Zelle ist unter:Kein Zugriff auf TableViewCell-Elemente mithilfe der Benutzeroberflächenautomatisierung

- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString*) reuseIdentifier { 
if(self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier]) { 
     self.contentView.isAccessibilityElement = YES; 
     self.contentView.accessibilityLabel = @"Blah"; 

     conferenceNameLabel = [[UILabel alloc] initWithFrame:CGRectZero]; 
     conferenceNameLabel.adjustsFontSizeToFitWidth = YES; 
     conferenceNameLabel.font = [UIFont systemFontOfSize:14]; 
     conferenceNameLabel.isAccessibilityElement = YES; 
     conferenceNameLabel.accessibilityLabel = @"Name"; 
     [self.contentView addSubview:conferenceNameLabel]; 

     conferenceDateLabel = [[UILabel alloc] initWithFrame:CGRectZero]; 
     conferenceDateLabel.adjustsFontSizeToFitWidth = YES; 
     conferenceDateLabel.font = [UIFont systemFontOfSize:14]; 
     conferenceDateLabel.isAccessibilityElement = YES; 
     conferenceDateLabel.accessibilityLabel = @"Date"; 
     [self.contentView addSubview:conferenceDateLabel]; 

     recurringIconView = [[UIImageView alloc] initWithFrame:CGRectZero]; 
     [recurringIconView setContentMode:UIViewContentModeScaleAspectFit]; 
     recurringIconView.isAccessibilityElement = YES; 
     recurringIconView.accessibilityLabel = @"Icon"; 
     [self.contentView addSubview:recurringIconView]; 

     [self setAccessoryType:UITableViewCellAccessoryDisclosureIndicator]; 
} 

return self; 

}

Wenn UI Automation verwenden, kann ich den Inhalt anzeigen Zugriff auf die Zugänglichkeit Bezeichnung „Blah“ mit. Ich kann jedoch nicht auf meine Labels oder mein ImageView zugreifen. Gibt es einen Grund, warum ich diese UI-Elemente nicht mithilfe der UI-Automatisierung erreichen kann?

Antwort

4

in Ihrem Skript, sollten Sie in der Lage sein, die Zugänglichkeit Hierarchie für jede Zelle, um sie abzuzumelden logElementTree mit():

cell.logElementTree(); 

Diese subview erscheinen sollen, dass Baum angemeldet, zusammen mit ihren Zugänglichkeit Etikett.

Wenn Sie irgendwie nicht, diese Elemente durch ihr Label adressieren können, sollten Sie in der Lage sein, sie in der Liste der Geschwister Ansichten durch ihre relative Position zu greifen:

var firstLabel = cell.elements()[0]; 

Ich gehe durch UI Automation und zeigen Beispiele wie man Tabellenansichten wie diese in meinem course on iTunes U testen kann.

+0

Ich werde Ihre Kursmaterialien überprüfen müssen, vielleicht wird es einen "AHA-Moment" geben und ich werde erkennen, dass ich etwas albernes mache. –

+0

Ich hatte versucht, das Element Baum Protokollierung aber UI Automation berichtet, dass meine Zelle eine Elementliste der Länge hat 1 und dass einzelne Element ein UIAElement, dessen Name der Name und das Datum der Telefonkonferenz und hat einen Wert von null. –

+4

@ Jonathan - Dies könnte darauf zurückzuführen sein, dass es wie Tabellenzellen aussieht sind Zugänglichkeit Behälter: http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/iPhoneAccessibility/Making_Application_Accessible/Making_Application_Accessible.html% 23 // Apple_ref/doc/uid/TP40008785-CH102-SW3. Möglicherweise müssen Sie die UIAccessibilityContainer-Protokollmethoden in Ihrer benutzerdefinierten Tabellenzelle überschreiben, um die richtige Anzahl von Beschriftungen und ein Array dieser Beschriftungen zurückzugeben. Beachten Sie jedoch, dass dadurch die Zugänglichkeit Ihrer Anwendung für sehbehinderte Benutzer beeinträchtigt wird. –

Verwandte Themen