- 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>
4.6 KiB
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 eraccessibilityHidden. - 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)/ SwiftUIaccessibilityElement+ 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.