app-creator/domain-packs/ios-app/checklist-accessibility.md
Kjell Tore Guttormsen 2011507ea1 design(app-creator): S6 — forfatt ios-app referanse-domain-pack + start claude-code-plugin-pakke
- domain-packs/ios-app/: komplett referanse-pakke (8 komponenter) — pack.json med
  components-map, conventions.md, 4 patterns/, gotchas.md, checklist.md splittet i 3
  (App Store-submission + security-privacy/MASVS 2.1 + accessibility/WCAG 2.2 AA),
  3 scaffold/-maler (PrivacyInfo.xcprivacy-plist, NSUsageDescription-inventar,
  ASC-metadata), eksempel-feature-brief i Voyage strict-mode-format, glossary.md.
  Hver teknisk påstand verifisert mot Apple Developer / W3C WAI / OWASP MAS.
- domain-packs/claude-code-plugin/: stub — pack.json + conventions.md + gotchas.md
  + checklist.md + glossary.md ferdige (ekstrahert fra ktg-privat-konvensjoner);
  patterns/scaffold/examples er stubs.
- docs/domain-pack-spec.md: § D2/D3/D4/D7 + restrisiko oppdatert — pack.json
  components-felt, core/supplementary låst til manifestet, checklist-splitt-konvensjon,
  snapshot-materialiserings-mekanikk presisert, iOS-versjons-korreksjon (iOS 26, ikke
  "iOS 18/19"), D7 → "forfattet i S6".
- prototype-run/friksjon.md: #9 (Akashic-briefen refererer "iOS 19" som ikke finnes —
  rettes i S7) + S6-prosessnotater (checklist-splitt bekreftet nødvendig, components-gap
  fylt, verifiserings-asymmetri ios-app vs claude-code-plugin notert).
- CLAUDE.md: peker til domain-packs/ under § Status.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-12 14:06:54 +02:00

4.6 KiB
Raw Blame History

iOS-app — tilgjengelighet sjekkliste (WCAG 2.2 AA)

WCAG 2.2 ble W3C Recommendation 2023-10-05. Den la til 9 nye suksesskriterier vs 2.1 og fjernet 4.1.1 Parsing (obsolet). Denne sjekklisten dekker AA-nivå. Sub-sjekkliste av checklist.md. (W3C — What's New in WCAG 2.2)

WCAG er skrevet for web, men kriteriene mapper godt til native iOS via UIKit/SwiftUI Accessibility (VoiceOver, Dynamic Type, kontrast, fokus-orden). Der et kriterium er web-spesifikt, bruk dets intensjon.

Nye i WCAG 2.2 — Level AA (de 4 som faktisk er nye krav på AA)

  • 2.4.11 Focus Not Obscured (Minimum) [AA, ny] — når et element får tastatur-/fokus, er det ikke fullstendig skjult av annet innhold (sticky headers, overlays, tastatur). iOS: pass på at fokusert felt scrolles synlig over tastaturet.
  • 2.5.7 Dragging Movements [AA, ny] — all funksjonalitet som krever dra-bevegelse har et enkelt-peker-alternativ uten dra (f.eks. knapper i tillegg til drag-to-reorder), med mindre dra er essensielt.
  • 2.5.8 Target Size (Minimum) [AA, ny] — interaktive mål er minst 24×24 CSS-px (eller har tilstrekkelig avstand). iOS HIG anbefaler 44×44 pt — følg HIG, så er dette dekket.
  • 3.3.8 Accessible Authentication (Minimum) [AA, ny] — ingen kognitiv funksjonstest (huske passord, løse puslespill, transkribere) som eneste vei gjennom et autentiserings-steg; tillat lim-inn, passord-managers, Sign in with Apple/passkeys, e-post-/SMS-kode. (Relevant kun hvis appen har auth.)

Også nye i 2.2, men Level A (ta med hvis du sikter A som baseline): 3.2.6 Consistent Help [A] — hjelpe-mekanismer i konsistent rekkefølge; 3.3.7 Redundant Entry [A] — ikke be om samme info to ganger i samme prosess uten å auto-fylle. Level AAA (utenfor AA-kravet): 2.4.12 Focus Not Obscured (Enhanced), 2.4.13 Focus Appearance, 3.3.9 Accessible Authentication (Enhanced).

Bærende WCAG 2.0/2.1 AA-kriterier (videreført — sjekk alltid)

  • 1.1.1 Non-text Content [A] — alle ikoner/bilder/knapper har accessibilityLabel; dekorative er accessibilityHidden.
  • 1.3.1 Info and Relationships [A] — overskrifter/grupper/lister eksponert via accessibility traits; skjemafelt har labels.
  • 1.4.3 Contrast (Minimum) [AA] — tekst ≥ 4.5:1 (stor tekst ≥ 3:1) mot bakgrunn — også over Liquid Glass-materialer (translucens kan senke effektiv kontrast; test mot reelle bakgrunner).
  • 1.4.11 Non-text Contrast [AA] — UI-komponenter og grafiske grenser ≥ 3:1.
  • 1.4.4 Resize Text [AA] / 1.4.10 Reflow [AA] — støtt Dynamic Type opp til største størrelse uten avkutting/horisontal scroll; bruk .dynamicTypeSize / skalérbare fonter, ikke faste px.
  • 1.4.13 Content on Hover or Focus [AA] — popovers/tooltips er dismissible, hoverbare, persistente.
  • 2.1.1 Keyboard [A] — full funksjon med ekstern tastatur / Full Keyboard Access; ingen fokus-felle (2.1.2).
  • 2.4.3 Focus Order [A] / 2.4.7 Focus Visible [AA] — logisk fokus-orden; synlig fokus-indikator.
  • 2.4.6 Headings and Labels [AA] — beskrivende overskrifter og labels.
  • 2.5.3 Label in Name [A] — synlig tekst på en kontroll er del av dens accessibility-navn.
  • 3.1.1 Language of Page [A] — app-språk satt korrekt (lokalisering).
  • 3.2.3 Consistent Navigation [AA] / 3.2.4 Consistent Identification [AA] — navigasjon og ikon-betydning konsistent på tvers av skjermer.
  • 3.3.1 Error Identification [A] / 3.3.3 Error Suggestion [AA] — feil beskrives i tekst, ikke bare farge; forslag til retting der mulig.
  • 4.1.2 Name, Role, Value [A] — custom-kontroller eksponerer korrekt rolle/verdi til VoiceOver (accessibilityTraits, accessibilityValue).
  • 4.1.3 Status Messages [AA] — dynamiske statusoppdateringer annonseres (UIAccessibility.post(notification: .announcement) / SwiftUI accessibilityElement + live region-ekvivalent).
  • 2.3.1 Three Flashes [A] — ingen blink > 3 Hz; respekter Reduce Motion.

iOS-spesifikk røyktest

  • Naviger hele appen med VoiceOver — alt er nåbart, navngitt, i logisk rekkefølge.
  • Dynamic Type på største størrelse — ingen avkutting, ingen overlapp.
  • Reduce Motion / Reduce Transparency respektert (særlig viktig med Liquid Glass).
  • Increase Contrast og dark mode — kontrast holder.
  • Fargen er aldri eneste informasjonsbærer.