Het ontwerpen van toegankelijkheid is essentieel om inclusieve digitale ervaringen voor alle gebruikers te creëren. In iOS spelen functies zoals VoiceOver en Dynamic Type een cruciale rol bij het verbeteren van de bruikbaarheid voor mensen met visuele beperkingen, lage gezichtsvermogen en andere toegankelijkheidsbehoeften. Door deze tools zorgvuldig te integreren, kunnen ontwikkelaars en ontwerpers ervoor zorgen dat hun apps bruikbaar zijn voor een breder publiek, inclusief degenen die vertrouwen op ondersteunende technologieën. Toegankelijkheid is niet een na-hotht.Het is een kernaspect van kwaliteitssoftwareontwerp dat elke gebruiker ten goede komt, of ze nu lezen op een klein scherm in helder zonlicht of een app navigeren zonder naar het display te kijken.

VoiceOver begrijpen

VoiceOver is een ingebouwde schermlezer in iOS die hardop leest alles wat verschijnt op het scherm knoppen, etiketten, afbeeldingen, schuifregelaars, en zelfs tekst wijzigingen. Het stelt gebruikers met visuele beperkingen om te navigeren apps en websites met behulp van een rijke set van gebaren en gesproken feedback. Wanneer een gebruiker raakt of sleept een vinger over het scherm, VoiceOver beschrijft het element onder hun vinger. Dubbel tikken overal op een geselecteerd element activeert het, terwijl drie-vinger swipes scroll inhoud. Dit gebaren-gebaseerde interactie model is krachtig, maar het plaatst een zware last op ontwikkelaars om nauwkeurige en volledige toegankelijkheid metadata.

VoiceOver vertrouwt op de Toegankelijkheid API (UIToegankelijkheid) om informatie over elementen op het scherm te extraheren. Elke UIKit-besturing., , , en aangepaste weergaven kunnen toegankelijkheidslabels, kenmerken, hints en aangepaste acties blootleggen. Als deze ontbreken of slecht zijn gemaakt, zal de schermlezer het element negeren of presenteren op een verwarrende manier, waardoor delen van uw app onbruikbaar worden.

Bij het ontwerpen van VoiceOver moeten ontwikkelaars ervoor zorgen dat alle interactieve elementen goed worden geëtiketteerd en toegankelijk via de toegankelijkheid API's. Dit omvat niet alleen inheemse controles, maar ook aangepaste interfaces, gebarenherkenners en dynamische inhoud. Een veel voorkomende fout is dat standaardlabels uit tekstinhoud voldoende zijn. VoiceOver kan het onderliggende controletype of een ruwe identificatiecode lezen, die zelden nuttig is. Geef altijd expliciete, menselijk leesbare etiketten.

Toegankelijkheidskenmerken

iOS biedt een set van toegankelijkheidskenmerken () die VoiceOver informeren over het gedrag van een element. Bijvoorbeeld:

  • Knop
  • Header
  • StaticText
  • Verstelbaar ..voor bedieningen zoals schuifregelaars of stappen die incrementeel/aftrekbare gebaren mogelijk maken.
  • Geselecteerd
  • Link

Het toepassen van de juiste eigenschap verbetert niet alleen de gesproken uitvoer, maar verandert ook de gebarenset die beschikbaar is voor de gebruiker. Bijvoorbeeld, een element met de Verstelbare eigenschap laat de gebruiker toe om zijn waarde te veranderen. Zonder dat, VoiceOver zal het behandelen als een standaard statische element.

Toegankelijkheidshints en aangepaste acties

Soms zijn een label en eigenschap niet genoeg. Toegankelijkheidshints kunnen extra context bieden over het resultaat van een actie, zoals

Voor elementen die meerdere acties ondersteunen (bijvoorbeeld een tabelcel die kan worden gepikt om de knoppen verwijderen, delen en verbergen te onthullen), gebruik custom actions[. VoiceOver kondigt het aantal beschikbare acties aan en laat de gebruiker deze uitvoeren door het op- of neerhalen in een speciale rotor. Door aangepaste acties te implementeren, worden complexe interacties toegankelijk zonder gebruikers te dwingen fysieke swipes uit te voeren die niet te ontdekken zijn.

VoiceOver-ondersteuning implementeren

Om VoiceOver effectief te ondersteunen, overwegen de volgende beste praktijken. Dit zijn niet alleen richtlijnen . they zijn noodzakelijk om toegankelijkheid audits door te geven en om een billijke ervaring te creëren.

  1. Gebruik beschrijvende labels voor knoppen, links en controles. Een knop met label .Opslaan is aanvaardbaar; beter is .Bewaren document .Opslaan of .Opslaan ontwerp . Vermijd generieke labels zoals .Button . of .Item 1 . Voor pictogrammen zonder zichtbare tekst, stel het label toegankelijkheid om de actie te beschrijven, bijvoorbeeld . . Voeg nieuw contact voor een plus pictogram.
  2. Zorg ervoor dat alle afbeeldingen betekenisvolle alt tekst hebben. Decoratieve afbeeldingen die geen informatie overbrengen moeten worden gemarkeerd als dus VoiceOver negeert ze. Informatieve afbeeldingen, zoals een grafiek of productfoto, hebben een beknopte beschrijving nodig. Vergeet niet om afbeeldingen bij te werken in en .
  3. Test navigatie met VoiceOver gebaren om potentiële problemen te identificeren. Zet VoiceOver in Instellingen → Toegankelijkheid → VoiceOver en probeer alle kerntaken in uw app te voltooien zonder naar het scherm te kijken. Let op elementen die worden overgeslagen, verkeerd gelezen of niet bereikbaar zijn.
  4. Gebruik toegankelijkheidskenmerken om het doel van elementen van UI te definiëren. Stel bijvoorbeeld in op sectietitels, en op tappable elementen.
  5. Group related elements using container views with and a combined label. Bijvoorbeeld, een kaart met een product afbeelding, naam en prijs moet een toegankelijk element met een label als
  6. Beroepsmeldingen voor toegankelijkheid wanneer inhoud dynamisch verandert. Gebruik om VoiceOver te richten op bijgewerkte inhoud, zoals een nieuw bericht in een chat of een modale die verschijnt.
  7. Vermijd dat u alleen op kleur of visuele signalen vertrouwt om de toestand over te brengen. VoiceOver gebruikers kunnen geen rode foutranden zien. Combineer altijd visuele indicatoren met tekst, symbolen of kenmerken zoals .
  8. Ondersteuningstransistor . Bijvoorbeeld, als uw app een schuifregelaar voor volume bevat, implementeer dan de Verstelbare ] eigenschap en ontmasker de toename- en destructieacties via de rotor.

Veel voorkomende stemOver Pitfalls

Zelfs ervaren ontwikkelaars kunnen subtiele problemen over het hoofd zien. Hier zijn vaak problemen om naar te kijken:

  • Over-gedesigneerde toegankelijke elementen: Als een ouderzicht toegankelijk is en zijn kinderen ook toegankelijk zijn, zal VoiceOver de ouder en vervolgens elk kind aankondigen, waardoor redundantie en verwarring ontstaat. Ofwel de ouder het enige toegankelijke element maken ofwel ervoor zorgen dat kinderen goed verborgen zijn.
  • Onjuiste schuifweergaven: VoiceOver hangt af van de grootte van de schuifweergave. Als de inhoudsgrootte niet correct is ingesteld, kan VoiceOver niet door alle elementen bladeren.
  • Betrokken toegankelijkheids-identifiers: Hoewel toegankelijkheids-identifier () voornamelijk voor geautomatiseerde tests is, mag het niet worden gebruikt als label voor VoiceOver. Geef altijd een aparte voor menselijk leesbare output.
  • Kenny-commando's negeren: Sommige gebruikers combineren VoiceOver met een extern toetsenbord. Zorg ervoor dat uw app reageert op gewone toetsenbordsneltoetsen (bijv. Cmd+S for Save) en dat deze acties ontdekt kunnen worden via de toegankelijkheidsrotor.

Dynamisch type begrijpen

Dynamic Type stelt gebruikers in staat om de tekstgrootte in iOS-apps systeembreed aan te passen, waardoor de leesbaarheid en het comfort voor mensen met een laag zicht, presbyopie of gewoon degenen die liever grotere tekst. Wanneer een gebruiker de tekstgrootte in Instellingen → Display & Helderheid → Tekstgrootte, of gebruik maken van de toegankelijkheid Snelkoppeling, elke app die Dynamic Type ondersteunt zal automatisch de tekst schalen. Dit is niet alleen een kwestie van het gebruik van een andere lettergrootte; het vereist een flexibele lay-out die lijnhoogte veranderingen, truncation, en zelfs verschillende lettertypegewichten in extreme maten kan opnemen.

Dynamic Type is gebouwd op het concept van tekststijlen gedefinieerd door . iOS biedt een set van vooraf gedefinieerde stijlen: , , , , , [, [, [, []] en meer. Elke stijl kaarten naar een specifieke lettergrootte en gewicht, maar kritisch, het schalen ten opzichte van de gebruiker de voorkeur inhoudsgrootte (van extra klein tot extra groot plus toegankelijkheidsgroottes). Wanneer u deze tekststijlen gebruikt, het systeem automatisch behandelt de schaal. Met behulp van hard-gecodeerde lettergroottes breekt dit systeem en kan het maken tekst onleesbaar of layout claps voor gebruikers die grotere typen nodig hebben.

Bij het ontwerpen van Dynamic Type moeten ontwikkelaars ervoor zorgen dat tekst correct schalen en dat de lay-out zich aanpast zonder te breken, overlappen of afknotten inhoud op ongewenste manieren. Dit gaat verder dan tekst zelf: marges, padding, knopbreedtes, en zelfs afbeeldingsgroottes kunnen nodig zijn om een harmonieuze blik op elke grootte te behouden.

De inhoudsgroottecategorieën

iOS definieert verschillende niveaus van tekstgrootte, variërend van XS (extra klein) tot XXXL (extra extra extra groot). De toegankelijkheidsgroottecategorieën (groter dan ]AX1[) zijn speciaal ontworpen voor gebruikers met visuele beperkingen en kunnen zeer grote tekst produceren die soms 50 punten overschrijdt voor tekst van het lichaam. In deze extreme maten kunnen zelfs zorgvuldig ontworpen lay-outs breken als ze niet getest worden. Xcode

Niet alle tekst hoeft even groot te zijn. Typisch, body text groeit het meest, terwijl kleine bijschriften of knoptitels minder agressief kunnen schalen. De klasse geeft je fijne korrelige controle over schalend gedrag voor aangepaste lettertypen die niet gebonden zijn aan een tekststijl.

Dynamisch type implementeren

Om Dynamic Type effectief te ondersteunen, volg deze praktijken. Ze zorgen ervoor dat uw app gebruikersvoorkeuren respecteert en zich voorspelbaar gedraagt over het hele scala aan tekstgroottes.

  1. Gebruik tekststijlen die automatisch aanpassen aan gebruikersinstellingen, zoals .2]], , enz. In Interface Builder kunt u het lettertype instellen op een tekststijl in de Attributen inspecteur. In code, gebruik .
  2. Vermijd vaste lettergroottes; vertrouw in plaats daarvan op schaalbare lettertypen. Als u een aangepast lettertype gebruikt, registreer het en maak het dan met ] om dezelfde schaalcurve toe te passen als de systeemlettertypen.
  3. Proef uw app met verschillende tekstgrootte-instellingen in Toegankelijkheidsopties. Ga naar Instellingen → Toegankelijkheid → Weergave & tekstgrootte → Grotere tekst om toegankelijkheidsgroottes mogelijk te maken. Navigeer dan door elk scherm in uw app, met speciale aandacht voor knoppen die worden geknipt, afbeeldingen overlappen en tekstafknottering.
  4. Zorg ervoor dat uw lay-out flexibel en leesbaar blijft in alle maten. Gebruik Auto Layout-beperkingen die zich aanpassen aan inhoudsgrootte in plaats van vaste breedtes. Bijvoorbeeld, een label moet leidende en trailing beperkingen hebben aan zijn superview, niet een vaste breedte, zodat het kan groeien en wrap. Gebruik om multiline tekst toe te staan.
  5. Lijnhoogte en alineaafstand dynamisch aanpassen. De standaard regelhoogte voor tekststijlen is passend, maar als u de toegewezen tekenreeksen gebruikt, zorgt u ervoor dat u instelt ten opzichte van de lettergrootte. Vermijd absolute puntwaarden.
  6. Gebruik voor aangepaste lettertypen: zorgt ervoor dat uw lettertypeschalen identiek zijn aan het systeemlichaamlettertype. U kunt ook gebruiken om constanten zoals marges of hoekradii proportioneel te schalen.
  7. Voor afbeeldingen of pictogrammen die tekst vergezellen, overwegen meerdere resoluties te verstrekken of SVG te gebruiken zodat ze zonder pixelatie schalen. Een pictogram dat naast een label zit, moet mogelijk groeien wanneer de tekst groeit. U kunt activacatalogi gebruiken met afbeeldingen van grootte of afbeeldingen op schaal met behulp van met tekststijlschaal.
  8. Actualisering van lay-outs wanneer Dynamic Type verandert tijdens de runtime. Registreer voor de notificatie om uw lay-out ongeldig te maken en groottes opnieuw te berekenen. Indien het systeem gebruikt, wordt het systeem automatisch trait collectie update aangeroepen; echter, aangepaste weergaven kunnen een expliciete behandeling nodig hebben.

Gebruik van dynamisch type in tabelweergaven en collectieweergaven

Dynamic Type kan lijstweergaven compliceren als celhoogtes zijn vastgesteld. De oplossing is zelfsizingscellen te gebruiken die hun intrinsieke hoogte berekenen op basis van de inhoud. Stel een geschatte rijhoogte in en laat Auto Layout cellen uitzetten. Voor , stel en geef een redelijke ]. Voor , gebruik compositielay-outs of maat-dat-passen berekeningen. Zorg er altijd voor dat labels binnen cellen leiden, volgen, boven- en ondergrenzen aan de celmarges.

Toegankelijkheidsgroottes en prestaties

Bij toegankelijkheidsgroottes kan tekst zeer groot worden en een enkele cel kan slechts enkele woorden bevatten. In chat-apps of nieuwsfeeds is dit aanvaardbaar en verwacht. Echter, in data-intensieve rasters (bijvoorbeeld een kalendermaandweergave), kan tekstschaalvorming de lay-out breken. In dergelijke gevallen kunt u ervoor kiezen om de maximale tekstgrootte voor dat bepaalde uitzicht te beperken of een alternatieve compacte lay-out te bieden. Wees transparant: als u opzettelijk het schalen beperkt, documenteert u dat het een pragmatische ontwerpkeuze is, maar probeert u het te vermijden indien mogelijk. Het doel is om de voorkeur van de gebruiker te respecteren, niet te overschrijven.

Een andere prestatie-consideratie: het schalen van afbeeldingen op runtime kan duur zijn. Als u verschillende afbeeldingsgroottes voor verschillende inhoudsgroottecategorieën verstrekt, laadt u alleen de benodigde resolutie. Gebruik om het juiste actief te selecteren op het moment van rendering.

Toegankelijkheid voorbij stemOver en dynamisch type

VoiceOver en Dynamic Type zijn twee van de meest impactvolle toegankelijkheidsfuncties in iOS, maar zijn niet de enige. Een uitgebreide toegankelijkheidsstrategie omvat ook ondersteuning voor:

  • Switch Control
  • AssistiveTouch .. virtuele knoppen en gebaren voor gebruikers die bepaalde fysieke bewegingen niet kunnen uitvoeren.
  • Voice Control . . . volledige spraakgebaseerde navigatie (anders dan VoiceOver).
  • Beweging verminderen
  • Verhoog Contrast en Knoopvorm ..voor een betere visuele helderheid.
  • Gesloten onderschriften en Audio-beschrijvingen

Elk van deze functies interageert op specifieke manieren met uw app. Bijvoorbeeld, elementen die aangepaste acties in VoiceOver ondersteunen werken ook met Switch Control. Zorgen dat elk interactief element een volledig touch target (ten minste 44x44 punten) is ten goede komt aan alle gebruikers, vooral die met motorische beperkingen. Ontwerpen met toegankelijkheid vanaf het begin betekent dat uw app goed zal werken met al deze ondersteunende technologieën, niet alleen VoiceOver en Dynamic Type.

Conclusie

Het ontwerpen met toegankelijkheid in het achterhoofd is niet alleen voordelig voor gebruikers met een handicap, maar verbetert ook de algemene gebruikerservaring voor iedereen. Kenmerken zoals VoiceOver en Dynamic Type zijn volwassen, goed gedocumenteerd en relatief eenvoudig te implementeren zodra u de basis API's begrijpt. Door VoiceOver ondersteuning te integreren met de juiste labels, eigenschappen en aangepaste acties, en door Dynamic Type aan te nemen door middel van schaalbare lettertypen en flexibele lay-outs, kunnen ontwikkelaars meer inclusieve en aanpasbare iOS-toepassingen creëren die een breder publiek bereiken. Toegankelijkheid is geen functie toggleit is een ontwerpfilosofie die menselijke diversiteit respecteert. Elke app die het omarmt wordt een empowermenting tool voor alle gebruikers, ongeacht hun vaardigheden.

Voor meer informatie, raadpleeg de Apple Human Interface Guidelines on Accessibility[, de Dynamic Type documentation, de VoiceOver developer resources, en de W3C Web Content Accessibility Guidelines (WCAG) 2.2 voor basisstandaarden die ook van toepassing zijn op mobiele apps.