Zoeken…


Invoering

Toegankelijkheid in iOS biedt gebruikers met gehoorproblemen en visuele beperkingen toegang tot iOS en uw applicatie door ondersteuning van verschillende functies zoals VoiceOver, Spraakbesturing, Wit op zwart, Mono Audio, Spraak naar tekst enzovoort. Toegankelijkheid bieden in de iOS-app betekent dat de app voor iedereen bruikbaar is.

Maak een weergave toegankelijk

Markeer uw UIView subklasse als een toegankelijk element zodat het zichtbaar is voor VoiceOver.

myView.isAccessibilityElement = YES;

Zorg ervoor dat de weergave een betekenisvol label, waarde en hint spreekt. Apple geeft meer informatie over het kiezen van goede beschrijvingen in de programmeerhandleiding voor toegankelijkheid .

Toegankelijkheidskader

Het toegankelijkheidsframe wordt gebruikt door VoiceOver voor het testen van aanrakingen, het tekenen van de VoiceOver-cursor en het berekenen van waar in het gefocusseerde element een tik simuleert wanneer de gebruiker dubbel tikt op het scherm. Merk op dat het frame in schermcoördinaten staat!

myElement.accessibilityFrame = frameInScreenCoordinates;

Als uw elementen of schermlay-outs vaak veranderen, overweeg dan om de accessibilityFrame - accessibilityFrame om altijd een bijgewerkte rect te bieden. Het berekenen van het scherm-relatieve frame van subviews van de scrolweergave kan foutgevoelig en vervelend zijn. iOS 10 introduceert een nieuwe API om dit eenvoudiger te maken : accessibilityFrameInContainerSpace .

Scherm wijzigen

VoiceOver werkt meestal geweldig, het lezen van schermen vol content en intuïtief de gebruiker volgen. Helaas is geen algemene oplossing perfect. Soms weet alleen u, de app-ontwikkelaar, waar VoiceOver op moet worden gericht voor een optimale gebruikerservaring. Gelukkig luistert VoiceOver naar systeemtoegangsmeldingen voor aanwijzingen over waar focus hoort. Als u de VoiceOver-cursor handmatig wilt verplaatsen, plaatst u een melding voor een toegankelijkheidsscherm gewijzigd:

UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, firstElement);

Wanneer deze melding wordt gepost, worden gebruikers door een korte reeks tonen op de hoogte gebracht van de wijziging. De tweede parameter kan het volgende focuselement zijn of een tekenreeks die de wijziging aankondigt. Post alleen een melding voor schermverandering als de VoiceOver-ervaring slecht is zonder en er geen andere oplossing bestaat. Het verplaatsen van de VoiceOver-cursor is als het porren op het scherm van een ziende gebruiker. Het kan vervelend en desoriënterend zijn om op die manier rondgeleid te worden.

Layout wijzigen

In veel gevallen wordt inhoud binnen een enkel scherm bijgewerkt met nieuwe of andere inhoud. Stel je bijvoorbeeld een formulier voor met extra opties op basis van het antwoord van de gebruiker op een eerdere vraag. In dit geval kunt u met een melding 'lay-outwijziging' de wijziging aankondigen of u richten op een nieuw element. Deze melding accepteert dezelfde parameters als de melding voor schermverandering.

UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, firstElement);

Aankondiging

Aankondigingen zijn nuttig om gebruikers te attenderen op gebeurtenissen die geen interactie vereisen, zoals "scherm vergrendeld" of "voltooid laden". Gebruik een specifiekere aankondiging om gebruikers op de hoogte te stellen van schermwijzigingen of meer kleine wijzigingen in de lay-out.

UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, @"The thing happened!");

Elementen bestellen

VoiceOver navigeert van linksboven naar rechtsonder, ongeacht de weergavehiërarchie. Dit is meestal de manier waarop inhoud wordt gerangschikt in talen van links naar rechts, omdat ziende mensen de neiging hebben het scherm in een "F-vormig patroon" te scannen. VoiceOver-gebruikers verwachten op dezelfde manier te navigeren als typische gebruikers. Voorspelbaarheid en consistentie zijn erg belangrijk voor toegankelijkheid. Zorg ervoor dat u geen aanpassingen maakt die het standaardgedrag "verbeteren" (bijvoorbeeld door de tabbalk eerst in de veegvolgorde te bestellen). Dat gezegd hebbende, als je feedback hebt ontvangen dat de volgorde van elementen in je app verrassend is, zijn er een aantal manieren waarop je de ervaring kunt verbeteren.

Als VoiceOver na elkaar de subviews van een view moet lezen, maar dit niet is, moet u VoiceOver misschien laten weten dat de elementen in een enkele view aan elkaar gerelateerd zijn. U kunt dit doen door shouldGroupAccessibiltyChildren :

myView.shouldGroupAccessibilityChildren = YES;

Overweeg het containerprotocol in de bovenliggende weergave te implementeren om complexe navigatiestructuren te ondersteunen die meerdere containers omvatten of interfaces bevatten die zonder UIKit zijn gerenderd.

Toegankelijkheidscontainer

VoiceOver kan door veel apps op iOS navigeren, omdat de meeste UIKit klassen UIAccessibilityProtocol implementeren. Functies die geen elementen op het scherm vertegenwoordigen met UIView , inclusief apps die Core Graphics of Metal gebruiken om te tekenen, moeten deze elementen beschrijven voor toegankelijkheid. Vanaf iOS 8.0 kan dit worden gedaan door een eigenschap aan de UIView toe te wijzen die ontoegankelijke elementen bevat:

myInaccessibleContainerView.accessibilityElements = @[elements, that, should, be, accessible];

Elk object in de array kan een instantie van UIAccessibilityElement of een andere klasse die voldoet aan UIAccessibilityProtocol . De onderliggende elementen moeten worden geretourneerd in de volgorde waarin de gebruiker ze moet navigeren. Als auteur van een toepassing kunt u toegankelijkheidscontainers gebruiken om de standaardvolgorde linksboven naar rechtsonder van VoiceOver-veegnavigatie te overschrijven. Aangezien UIView UIAccessibilityProtocol implementeert, kunt u instanties van UIAccessibilityElement en UIView combineren in dezelfde reeks elementen voor UIAccessibilityElement . Houd er rekening mee dat als u elementen handmatig toewijst, u geen dynamische methoden voor toegankelijkheidsprotocollen hoeft te implementeren, hoewel u mogelijk een melding van schermverandering moet geven voor de elementen die door VoiceOver worden gedetecteerd.

Modale weergave

Modale weergaven trekken de aandacht van de gebruiker volledig vast totdat een taak is voltooid. iOS verduidelijkt dit voor gebruikers door alle andere inhoud te dimmen en uit te schakelen wanneer een modale weergave, zoals een waarschuwing of popover, zichtbaar is. Een app die een aangepaste modale interface implementeert, moet VoiceOver erop wijzen dat deze weergave de onverdeelde aandacht van de gebruiker verdient door de accessibilityViewIsModal . Merk op dat deze eigenschap alleen moet worden ingesteld op de weergave met modale inhoud, niet op elementen in een modale weergave.

myModalView.accessibilityViewIsModal = YES;

Een weergave labelen als modaal, moedigt VoiceOver aan om broers en zussen te negeren. Als u na het instellen van deze eigenschap merkt dat VoiceOver nog steeds andere elementen in uw app navigeert, probeer dan probleemweergaven te verbergen totdat het modale wordt afgesloten.

Elementen verbergen

De meeste UIKit-klassen, inclusief UIView, houden zich aan UIAccessibilityProtocol en retourneren standaard correcte waarden. Het is gemakkelijk om aan te nemen dat een UIView ingesteld op verborgen, ook ontbreekt in de toegankelijkheidshiërarchie en niet wordt genavigeerd door VoiceOver. Hoewel dit standaardgedrag meestal voldoende is, zijn er tijden dat een weergave aanwezig is in de weergavehiërarchie maar niet zichtbaar of navigeerbaar is. Een verzameling knoppen kan bijvoorbeeld worden overlapt door een andere weergave, waardoor ze onzichtbaar worden voor een ziende gebruiker. VoiceOver zal echter nog steeds proberen ze te navigeren, omdat ze technisch gezien niet verborgen zijn voor UIKit en daarom nog steeds aanwezig zijn in de toegankelijkheidshiërarchie. In dergelijke gevallen moet u VoiceOver een hint geven dat de bovenliggende weergave niet toegankelijk is. U kunt dit doen door de weergave expliciet voor UIKit te verbergen door verborgen in te stellen wanneer de weergave offscreen gaat:

myViewFullofButtons.hidden = YES;

U kunt ook de bovenliggende weergave zichtbaar laten en de onderliggende items eenvoudig verbergen voor de toegankelijkheidshiërarchie:

myViewFullofButtons.accessibilityElementsHidden = YES;

Tijdelijke weergaven zijn een andere plaats waar u elementen voor de toegankelijkheidshiërarchie wilt verbergen en ze zichtbaar wilt houden voor gebruikers. De weergave die verschijnt wanneer u op de volumeknop drukt, is bijvoorbeeld zichtbaar voor ziende gebruikers, maar vereist geen aandacht zoals een normale waarschuwing. U wilt niet dat VoiceOver de gebruiker onderbreekt en de cursor weghaalt van wat ze ook deden om het nieuwe volume aan te kondigen, vooral omdat het aanpassen van het volume al auditieve feedback geeft door het klikkende geluid dat het maakt. In dit soort gevallen wilt u de weergave verbergen met accessibilityElementsHidden .



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow