06/04/2023
En af de mest almindelige klager, jeg har hørt om applikationer, der ikke er native – såsom dem bygget med Power Apps – er, at de sjældent føles lige så flydende eller intuitive som native telefonapps. Denne opfattelse er ofte sand, men den stammer ikke fra en iboende begrænsning i teknologien, snarere fra manglende opmærksomhed på detaljerne i brugergrænsefladen og -oplevelsen. En af de mest markante forskelle, jeg har observeret, når jeg bruger mine telefonapps, er, hvordan tastaturet intelligent tilpasser sig den datatype, der forventes i et tekstinputfelt. Denne subtile, men kraftfulde funktion kan fuldstændigt transformere brugeroplevelsen og gøre en verden til forskel for, hvor hurtigt og fejlfrit man kan udfylde formularer på en mobil enhed.

Hvorfor er det vigtigt at tilpasse tastaturet?
At indtaste tekst på en mobiltelefon er en markant anderledes oplevelse end på en desktopcomputer. Med en mindre skærm er det ikke alle taster, der er synlige på tastaturet på én gang, hvilket gør indtastning langsommere og mere fejlbehæftet. De fleste mobile operativsystemer er designet med optimerede tastaturer til specifikke typer af formularinput, men mange udviklere udnytter desværre ikke disse muligheder fuldt ud. Dette fører til unødvendigt lange formularudfyldelsestider og en frustrerende brugeroplevelse for slutbrugeren. Når tastaturet tilpasser sig den forventede inputtype, får brugeren adgang til de mest relevante taster med det samme. Forestil dig at skulle indtaste et telefonnummer, men kun have et alfabetisk tastatur – det kræver manuel skift og forlænger processen. Ved at implementere de korrekte inputtyper kan vi give brugerne det mest hensigtsmæssige tastatur, hvilket ikke kun fremskynder processen, men også minimerer fejl og forbedrer tilgængeligheden markant. Det handler om at fjerne friktion og gøre interaktionen så gnidningsfri som muligt.
`input type`: Den fundamentale forskel
Det mest grundlæggende skridt til at tilpasse tastaturet er at bruge den korrekte input type attribut i HTML. Mange udviklere begår den fejl at sætte input type for hvert formularfelt til 'text', selvom indholdet sjældent er ren tekst. Dette er et problem, da formularer ofte beder om numerisk eller alfanumerisk information. Når input type er sat korrekt, skifter tastaturet automatisk på Android- og iOS-enheder, når brugeren fokuserer på feltet, hvilket giver en skræddersyet indtastningsoplevelse med minimal indsats.

Lad os se på nogle af de vigtigste input type værdier og deres fordele:
- `input type="text"`: Standardindstillingen og den mest generiske. Den viser et almindeligt alfabetisk tastatur. Brug den kun, når du faktisk forventer fri tekst.
- `input type="email"`: Når du beder om en e-mailadresse, giver denne type et tastatur, der er optimeret til e-mail. Udover bogstaver viser det også tegn som '@' og '.' direkte, hvilket gør det nemt at indtaste adresser uden at skulle lede efter specialtegn. Denne type inkluderer også indbygget validering.
- `input type="url"`: Til webadresser får brugeren et tastatur med taster som '.', '/' og '.com'. Ofte kan man 'long-presse' '.com'-tasten for at vælge andre almindelige suffikser som '.org' eller '.net'. Denne type fjerner ofte også mellemrumstasten for at forhindre indtastningsfejl, hvilket er en smart detalje. Denne type inkluderer også indbygget validering.
- `input type="number"`: Når et felt kun forventer tal, giver denne type et numerisk tastatur. Dette sparer brugerne tid, da de ikke behøver at skifte manuelt til et numerisk tastatur. På desktopbrowsere kan denne type dog vise små pile til inkrementering, som kan være lette at aktivere ved et uheld, f.eks. ved scrolling.
- `input type="tel"`: Til telefonnumre vises et telefonisk tastatur, som brugere er vant til fra deres telefonopkaldsskærm. Dette er utrolig intuitivt for indtastning af telefonnumre.
Udover disse tekstbaserede typer findes der også specifikke typer til dato og tid, som `date`, `time`, `datetime-local` og `month`. Disse udløser ikke et tastatur, men derimod specialiserede widgets på iOS og Android, der gør det nemt at vælge en dato eller tid. Selvom native dato- og tidsvælgere er velunderstøttede, vælger mange større apps at bruge brugerdefinerede vælgere. Dette skyldes ofte, at de native iOS-vælgere kan være mindre intuitive end en kalenderwidget, og Android-implementeringerne kan være begrænsede, f.eks. med hensyn til valg af datointervaller. Hvis du ønsker at skjule den native kalenderdropdown for desktopbrugere, men beholde den for mobilbrugere, kan du bruge CSS-snippetet: `::-webkit-calendar-picker-indicator { display: none; }`.
I Power Apps findes en lignende funktionalitet gennem `VirtualKeyboardMode`-egenskaben for tekstinputkontrollen. Denne har tre mulige værdier: `Auto`, `Numeric` og `Text`. `Numeric` og `Text` er selvforklarende, mens `Auto` betyder, at tilstanden vil falde tilbage til kontrolens standardtilstand, baseret på dens datatype. Dette giver udviklere i Power Apps mulighed for at opnå en lignende brugeroplevelse som med native apps ved at styre tastaturets adfærd.

`inputmode`: Fintuning af tastaturet
Mens input type er et kraftfuldt værktøj, giver inputmode-attributten dig mulighed for at finjustere eller endda tilsidesætte det mobiltastatur, der er angivet af input'ens `type`. I første omgang kan det virke unødvendigt – hvorfor ikke bare bruge den korrekte `type` fra starten? Men inputmode er ekstremt nyttig i specifikke scenarier, især når du ønsker at forbedre nummerinput.
Som nævnt kan `input type="number"` på desktopbrowsere være klodset med små inkrementeringspile. En bedre praksis for de fleste numeriske inputfelter er at bruge en kombination af `type="text"` og `inputmode="decimal"`:
<input type="text" inputmode="decimal" />
Hvorfor `decimal` og ikke `numeric`? På Android producerer `numeric` og `decimal` identiske tastaturer. Men på iOS viser `numeric` et tastatur med både tal og tegnsætning, mens `decimal` viser et mere fokuseret gitter af tal, der næsten ligner `tel`-inputtypen, men uden de ekstra telefonnummer-specifikke muligheder. Dette gør `decimal` til det foretrukne valg for de fleste typer nummerinput, hvor du ønsker en ren numerisk indtastning, der også tillader decimaler.
`autocomplete` og `datalist`: Forbedret udfyldning
Udover at vise det korrekte mobiltastatur er det lige så vigtigt at give nyttige autocomplete-forslag. Dette kan i høj grad bidrage til en hurtigere og mindre frustrerende brugeroplevelse på mobilenheder. Selvom browsere har heuristikker for at vise autocomplete-felter, kan man ikke stole udelukkende på dem. Det er afgørende at tilføje den korrekte autocomplete-attribut eksplicit. For eksempel vil et `input type="tel"` i iOS Safari kun vise autocomplete-muligheder, hvis du udtrykkeligt tilføjer `autocomplete="tel"`-attributten.

Der findes over 50 mulige værdier for autocomplete, og det er værd at gennemgå dem for at sikre, at du udnytter alle mulighederne. Vidste du, at `autocomplete="one-time-code"` kan gøre en telefonverificeringsproces utrolig glidende ved automatisk at foreslå koden, når den modtages via SMS?
En anden kraftfuld funktion, der giver dig mulighed for at skabe din egen brugerdefinerede autocomplete-funktionalitet, er `
Android specifikke indstillinger
For Android-udviklere, især dem der arbejder med Jetpack Compose, er der yderligere indstillinger for at styre tastaturets adfærd. Hvert tekstfelt forventer en bestemt type tekstinput, og du skal angive inputtypen for hvert tekstfelt i din app, så systemet viser den passende soft-inputmetode, altså et skærmtastatur.
Du skal altid erklære inputmetoden for dine tekstfelter ved at tilføje `android:inputType`-attributten til `
- `android:inputType="phone"`: Viser et tastatur optimeret til telefonnumre.
- `android:inputType="textPassword"`: Skjuler brugerinputtet, ideelt til adgangskodefelter.
- `android:inputType="textAutoCorrect"`: Aktiverer automatisk stavekontrol.
- `android:inputType="textCapSentences"`: Automatisk stort begyndelsesbogstav for nye sætninger.
Disse værdier kan kombineres, f.eks. `android:inputType="textCapSentences|textAutoCorrect"` for at opnå flere adfærd på én gang.

Desuden kan du specificere tastaturets 'action'-knap i nederste højre hjørne ved hjælp af `android:imeOptions`-attributten. Standard er 'Næste' eller 'Færdig', men du kan ændre det til 'Send' (`actionSend`), 'Søg' (`actionSearch`) eller andre relevante handlinger. Du kan lytte efter disse handlinger med en `TextView.OnEditorActionListener`:
findViewById<EditText>(R.id.search).setOnEditorActionListener { v, actionId, event -> return @setOnEditorActionListener when (actionId) { EditorInfo.IME_ACTION_SEND -> { sendMessage() true } else -> false } }For at give forslag til brugere, mens de skriver, kan du bruge `AutoCompleteTextView`, en underklasse af `EditText`. Denne kræver en `Adapter` (f.eks. `ArrayAdapter` for data fra en array), der leverer tekstforslagene, hvilket skaber en intuitiv 'type-ahead'-funktionalitet.
Sammenligning af input-typer og deres effekter
For at opsummere de forskellige input type-attributter og deres indvirkning på brugeroplevelsen, har vi samlet en oversigt:
| HTML `input type` | Primær tastatur/UI-effekt på mobil | Fordel for brugeren |
|---|---|---|
| `text` | Standard alfanumerisk tastatur | Til generisk tekstinput |
| `email` | Alfanumerisk tastatur med '@' og '.' genveje | Hurtig indtastning af e-mailadresser, indbygget validering |
| `url` | Alfanumerisk tastatur med '.', '/' og '.com' genveje, ofte uden mellemrum | Nem indtastning af webadresser, indbygget validering, færre fejl |
| `number` | Numerisk tastatur | Hurtig indtastning af heltal, reducerer fejl |
| `tel` | Telefonisk numerisk tastatur | Intuitiv indtastning af telefonnumre |
| `date` / `time` | Dato-/tidsvælger widget (ikke tastatur) | Nem og standardiseret valg af dato/tid |
| `type="text" inputmode="decimal"` | Fokuseret numerisk tastatur (med decimalpunkt) | Optimal indtastning af tal, der kan indeholde decimaler, uden desktop-pile |
Ofte Stillede Spørgsmål (OSF)
- Hvad er den primære forskel mellem input type og inputmode?
- input type fortæller browseren, hvilken type data der forventes (f.eks. e-mail, telefonnummer, tal), og browseren vil ofte vælge et passende tastatur baseret på dette. inputmode giver dig mere direkte kontrol over, hvilket tastatur der skal vises, og kan tilsidesætte input type i visse tilfælde. Det er især nyttigt, når du ønsker et numerisk tastatur uden de validerings- eller UI-særegenheder, der følger med `input type="number"`, som f.eks. ved at bruge `type="text" inputmode="decimal"`.
- Hvorfor er det så vigtigt at bruge autocomplete?
- autocomplete forbedrer brugeroplevelsen markant ved at foreslå tidligere indtastede data eller systemdata (f.eks. adresser, telefonnumre, kreditkortinformationer). Dette sparer brugeren for tid og reducerer indtastningsfejl, især på mobilenheder, hvor indtastning kan være besværlig. Det kan også bruges til at forbedre sikkerheden, f.eks. med `one-time-code` for SMS-verifikationer.
- Hvad er `datalist`, og hvordan adskiller det sig fra autocomplete?
- `datalist` giver dig mulighed for at definere en liste over foruddefinerede forslag, som brugeren kan vælge imellem, mens de skriver i et tekstfelt. I modsætning til autocomplete, som trækker fra browserens gemte data, lader `datalist` dig give specifikke, app-definerede forslag. Det fungerer som en kombination af et tekstfelt og en dropdown-menu, hvilket gør det fleksibelt og brugervenligt.
- Fungerer disse input type, inputmode og autocomplete-indstillinger på alle browsere og enheder?
- De fleste moderne browsere og mobilenheder understøtter bredt HTML5 input type og autocomplete. inputmode har også god understøttelse, især på mobile browsere. Der kan dog være små forskelle i den visuelle implementering af tastaturer og widgets mellem forskellige operativsystemer (f.eks. iOS vs. Android) og browserversioner. Det er altid en god idé at teste din implementering på de primære målenheder for at sikre den ønskede adfærd.
Konklusion
Når man udvikler formularer, er det fristende at fokusere primært på desktop-oplevelsen og betragte mobilweb som en eftertanke. Men som denne artikel har vist, behøver det ikke at være en stor opgave at sikre, at formularer fungerer optimalt på mobilenheder. Med nogle få, enkle skridt – ved at bruge de korrekte input type, inputmode og autocomplete-attributter (eller tilsvarende i rammer som Power Apps og Android Compose) – kan du markant forbedre brugeroplevelsen. Disse små detaljer har en enorm indflydelse på, hvor hurtigt, fejlfrit og behageligt dine brugere kan interagere med dine applikationer og websites på farten. At mestre disse teknikker er nøglen til at skabe en gnidningsfri og professionel mobiloplevelse, der føles lige så god som en native app.
Hvis du vil læse andre artikler, der ligner Optimér Mobil-Tastaturet: En Guide Til Bedre UX, kan du besøge kategorien Mobil.
