2014-01-30 7 views
6

Wie füge ich accessibilityLabel zu UIAlertView Schaltflächen hinzu?Wie füge ich `accessibilityLabel` zu` UIAlertView` Tasten hinzu?

UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"Announcement" 
               message: @"message!" 
               delegate: nil  
             cancelButtonTitle: @"cancelButton" 
             otherButtonTitles: @"otherButton"]; 

[alert show]; 
+2

Was ist falsch an der Standard-Barrierefreiheit? Ich glaube nicht, dass es eine (offizielle) Möglichkeit gibt, dies zu ändern. – Wain

Antwort

1

die einzigen Art und Weise, dies zu tun ist, um die UIButtons innerhalb der UIAlertView Subviews finden:

for (id button in self.alertView.subviews){ 
    if ([button isKindOfClass:[UIButton class]]){ 
     ((UIButton *)button).accessibilityLabel = @"your custom text"; 
    } 
} 

Allerdings ist dies der einzige Weg, es zu tun, weil es noch keine öffentliche API ist diese UIButtons den Zugriff auf und das ist, weil Apple nicht möchte, dass Sie auf sie zugreifen. Der Zugriff auf interne Ansichten der UIAlertView-Klasse ist etwas, was Apple nicht zulässt und es ist wahrscheinlich, dass Ihre App während der App Store-Überprüfung abgelehnt wird.

Wenn Sie wirklich UIButtons mit einem benutzerdefinierten accessibilityLabel benötigen, sollten Sie eine benutzerdefinierte Warnmeldungsansicht entwerfen, anstatt die Apple UIAlertView-Klasse zu verwenden.

6

Nach Apple's documentation (Suche nach 'Making Alarm Ansichten Erreichbar'), sind AlertViews 'zugänglich default'. Dies und die Tatsache, dass die Schaltflächen nicht editierbar sind, bedeutet, dass Sie wahrscheinlich nicht versuchen sollten, die accessibilityLabel selbst zu ändern. Standardmäßig verwenden sie den Titel der Schaltfläche und das Wort "Schaltfläche", was in Ordnung sein sollte.

Eingabehilfen für Warnmeldungsansichten gehören zum Warnmeldungstitel, zur Warnmeldung und zu Schaltflächentiteln. Wenn VoiceOver aktiviert ist, spricht es das Wort "alert", wenn eine Warnung angezeigt wird, und spricht dann seinen Titel, gefolgt von seiner Nachricht, falls gesetzt. Wenn der Benutzer auf eine Schaltfläche tippt, spricht Voiceover-Titel und das Wort „-Taste.“ Wenn der Benutzer ein Textfeld tippt, spricht Voiceover seinen Wert und „Textfeld“ oder „sicheres Textfeld ein.“

0

Spät, aber vielleicht nützlich für jemanden.

Sie können über ihren Index auf die Alarmschaltflächen zugreifen. Zum Beispiel können Sie die zweite Schaltfläche auf dem Bildschirm wie die folgende Art und Weise in Objective C:

- (void)getAlertActionButton:(XCUIApplication *)app { 
    // any code 
    XCUIElement *secondAlertButton = [[[app.alerts otherElements] buttons] elementBoundByIndex:1]; 
    // any code  
} 

Um Ihre Warnung Fensterhierarchie Verwendung Debug-Modus zu finden.

Verwandte Themen