3D Touch — Apple-hårdvara som känner igen tryckkraften på iPhone-skärmen och dess mjukvaruersättning Haptic Touch, som fungerar baserat på beröringens varaktighet. 3D Touch använder kalibrerade trycksensorer monterade under skärmmatrisen (Force Touch) och gör det möjligt att skilja lätt tryck (peek) från djupt (pop). Från och med iOS 13 ersatte Apple 3D Touch med Haptic Touch — en teknik som simulerar kraftigt tryck via Long Press med haptisk återkoppling UIContextMenuInteraction.
Huvudpunkter
3D Touch — hårdvaru-inmatningsteknik som debuterade i iPhone 6S (2015). Under skärmytan finns kapacitiva sensorer som mäter avståndet mellan glaset och bakgrundsbelysningen. Vid tryck med fingret böjs glaset mikrometer, sensorer registrerar deformationens storlek och omvandlar den till ett kraftvärde (gram). iOS skiljer på tre nivåer: lätt beröring (touch), medelstarkt tryck (peek, ~200 g) och djupt tryck (pop, ~400 g).
Haptic Touch — mjukvaruersättning för 3D Touch, introducerad i iOS 13 (2019). Istället för att mäta tryck använder Haptic Touch Long Press (hålla fingret ~500 ms) för att aktivera samma åtgärder. Haptisk återkoppling (haptic feedback) simulerar känslan av ett "klick", även om inget fysiskt tryck sker. Apple bytte till Haptic Touch på grund av komplexiteten och höga produktionskostnaderna för 3D Touch-skärmar, särskilt vid övergången till OLED-paneler med Face ID.
Historisk bakgrund: 3D Touch dök upp i iPhone 6S och fanns kvar till iPhone XS (2018). iPhone XR (2018) blev den första enheten med Haptic Touch istället för 3D Touch. Från iPhone 11 (2019) och iOS 13 använder alla nya iPhones Haptic Touch. iPad fick aldrig 3D Touch — endast Haptic Touch från iPadOS 13. Apple Watch använder Force Touch-teknik i skärmen (skiljer sig från iPhone 3D Touch), som togs bort från watchOS 7 och Series 6.
Force Touch — teknik för mätning av tryckkraft som används av Apple i iPhone 6S–XS (3D Touch), MacBook-styrplattor (2015+) och Apple Watch (Series 1–5). I grunden finns kapacitiva sensorer placerade runt skärmens omkrets. Vid tryck deformeras glaset med mikrometer, sensorer registrerar avståndsförändringen och beräknar kraften enligt en kalibreringskurva. Systemet tar hänsyn till omgivningstemperaturen (kalibrering var 24:e timme) och fingerposition (mitten av skärmen är känsligare).
Kalibrering — en kritisk aspekt av 3D Touch. Varje iPhone kalibreras individuellt i fabriken. iOS utför också dynamisk kalibrering: vid första trycket efter start begär systemet användarens maximala kraft och justerar känsligheten. Sensorerna har en noggrannhet på ±10 gram, intervall — från 0 till 500+ gram. Utvecklaren kan få kraftvärdet via UITouch.force (normaliserat från 0.0 till maximum) eller UITouch.maximumPossibleForce.
// Kontrollera tillgänglighet av 3D Touch och läsa tryckkraft
class ForceTouchViewController: UIViewController {
override func touchesMoved(_ touches: Set<UITouch>,
with event: UIEvent?) {
guard let touch = touches.first else { return }
// Kontrollera Force Touch-stöd på enheten
guard self.traitCollection.forceTouchCapability
== UIForceTouchCapability.available else {
// Enheten stöder inte 3D Touch
return
}
// Läsa tryckkraft (0.0 — max)
let force = touch.force // 0.0 ... maximumPossibleForce
let maxForce = touch.maximumPossibleForce
// Normalisering till intervall 0.0–1.0 för visualisering
let normalizedForce = force / maxForce
// Visuell reaktion på tryckkraft (skalning av element)
forceView.transform = CGAffineTransform(scaleX: 1.0 + normalizedForce * 0.3,
y: 1.0 + normalizedForce * 0.3)
}
}Begränsningar: 3D Touch fungerar endast med aktiv beröring (UITouch.phase == .began eller .moved). Efter släpp återställs kraftvärdet. Maximalt kraftvärde varierar mellan enheter: iPhone 6S — 6.6666, iPhone 7/X — upp till 20.0 (på grund av annan kalibrering). Använd inte force för kritiska åtgärder — användaren vet kanske inte med vilken kraft den ska trycka. Ge alltid ett alternativ via Haptic Touch (Long Press).
Peek and Pop — det ursprungliga Apple UX-mönstret, introducerat med 3D Touch i iPhone 6S. Peek — lätt tryck (force ~0.5–1.0) som visar en förhandsvisning av innehåll (e-post, länk, foto) i form av ett förhandsgranskningskort. Pop — djupare tryck (force ~2.0+) som öppnar innehållet på helskärm. Peek stödde åtgärder längst ner (share, copy, reply), tillgängliga genom att svepa uppåt på förhandsgranskningskortet.
Implementering av Peek and Pop i UIKit omfattade tre komponenter: UIViewControllerPreviewingDelegate (protokoll med metoderna previewingContext(_:viewControllerForLocation:) och previewingContext(_:commit:)), UIPreviewAction (åtgärder längst ner) och registrering via registerForPreviewing(with:sourceView:). Utvecklaren specificerade vilken ViewController som skulle visas vid Peek och hur den skulle öppnas vid Pop. Systemet lade automatiskt till parallaxanimering och bakgrundsoskärpa.
| Gest | Kraft (norm.) | Åtgärd | Visuell effekt |
|---|---|---|---|
| Beröring (Touch) | 0.0–0.3 | Vanlig interaktion | Markering av element |
| Lätt tryck (Peek) | 0.5–1.0 | Förhandsvisning av innehåll | Kort med bakgrundsoskärpa |
| Djupt tryck (Pop) | 2.0+ | Öppna på helskärm | Animering av kortutvikning |
| Svep uppåt | — | Åtgärder (share, copy) | UIPreviewAction-grupp |
Övergång till UIContextMenuInteraction (iOS 13): Apple ersatte Peek and Pop med kontextmenyer via UIContextMenuInteraction. Det nya API:et är enklare: kräver inte UIViewControllerPreviewingDelegate, stöder hierarkiska menyer (undermenyer), SF Symbols-ikoner och fungerar likadant med 3D Touch och Haptic Touch. Migrering: registerForPreviewing är föråldrat från iOS 13. Ersätt det med UIContextMenuConfiguration, som automatiskt anpassar sig till enhetens kapacitet.
UIContextMenuInteraction — modernt iOS-API för kontextmenyer, tillgängligt från iOS 13. Läggs till valfri UIView via addInteraction(_:). Delegeten UIContextMenuInteractionDelegate tillhandahåller menykonfigurationen: UIContextMenuConfiguration med identifierare, previewProvider (valfritt, för förhandsvisning) och actionProvider (array av UIAction eller UIMenu). Kontextmenyn aktiveras via 3D Touch (om tillgängligt) eller Haptic Touch (Long Press på andra enheter).
// UIContextMenuInteraction med hierarkisk meny
class ContextMenuViewController: UIViewController,
UIContextMenuInteractionDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let interaction = UIContextMenuInteraction(delegate: self)
contextMenuView.addInteraction(interaction)
}
func contextMenuInteraction(_ interaction: UIContextMenuInteraction,
configurationForMenuAtLocation location: CGPoint) -> UIContextMenuConfiguration? {
return UIContextMenuConfiguration(identifier: nil,
previewProvider: { PreviewViewController() }) { _ in
let share = UIAction(title: "Dela",
image: UIImage(systemName: "square.and.arrow.up"),
handler: { _ in self.shareContent() })
let edit = UIAction(title: "Redigera",
image: UIImage(systemName: "pencil"),
handler: { _ in self.editContent() })
let delete = UIAction(title: "Ta bort",
image: UIImage(systemName: "trash"),
attributes: .destructive,
handler: { _ in self.deleteContent() })
return UIMenu(title: "Åtgärder", children: [share, edit, delete])
}
}
}UIContextMenuConfiguration stöder previewProvider — en kontrollenhet som visas som förhandsvisning. Om previewProvider är nil visas kontextmenyn utan förhandsvisning. För att justera storlek och utseende på förhandsvisningen används UIContextMenuContentPreviewProvider. Kontextmenyer får automatiskt haptisk återkoppling (Haptic Touch Engine) och visas med animering (scale + fade).
Haptic Touch och 3D Touch — olika teknologier som leder till samma resultat. 3D Touch är hårdvara (trycksensorer i skärmen), Haptic Touch är mjukvara (Long Press + Taptic Engine för haptisk simulering). 3D Touch kräver produktionskostnader (extra sensorlager), ökar skärmtjockleken och reparationskomplexiteten. Haptic Touch är billigare, enklare att producera och tillgängligt på alla moderna enheter (iPhone SE 2020, iPhone 11–16, iPad, iPod touch).
| Parameter | 3D Touch | Haptic Touch |
|---|---|---|
| Princip | Tryckmätning (gram) | Tidsmätning (millisekunder) |
| Tillgänglighet | iPhone 6S–XS (begränsad) | iPhone XR+, iPad, iPod touch |
| Hastighet | Omedelbar (~100 ms) | Med fördröjning (~500 ms) |
| Trycknivåer | 2 (peek + pop) | 1 (kontextmeny) |
| Haptisk återkoppling | Taptic Engine (klicksimulering) | Taptic Engine (klicksimulering) |
| App Store | Quick Actions på ikon | Quick Actions på ikon |
| Kalibrering | Auto-kalibrering till användarens styrka | Krävs inte |
| Reparerbarhet | Komplex (sensorer i skärmen) | Standard |
Inverkan på UX: hastigheten på 3D Touch är högre — användaren får kontextmenyn omedelbart vid kraftigt tryck. Haptic Touch kräver en paus på 500 ms, vilket känns långsammare. Apple kompenserar dock detta med haptisk återkoppling och visuell animering. Användare som går över från 3D Touch till Haptic Touch märker ofta skillnaden i hastighet. För utvecklare är migreringen transparent: UIContextMenuInteraction fungerar likadant på båda teknologierna.
Quick Actions — kontextmeny på appikonen på hemskärmen. Kraftigt tryck (3D Touch) eller Long Press (Haptic Touch) på ikonen visar upp till 4 snabbåtgärder: "Nytt meddelande" (Messages), "Ta foto" (Camera), "Sök" (Safari). Implementeras via Info.plist-nyckeln UIApplicationShortcutItems eller via delegeten UIApplicationShortcutItem. Quick Actions är tillgängliga på alla enheter med iOS 13+ (Haptic Touch) eller 3D Touch.
Tangentbord-styrplatta — kraftigt tryck på iOS-tangentbordet växlar det till styrplatteläge: tangenter blir inaktiva och fingerrörelse flyttar markören. 3D Touch aktiverade styrplattan med kraftigt tryck var som helst på tangentbordet. Haptic Touch aktiverar styrplattan med långt tryck på mellanslagstangenten (spacebar). Styrplatteläget har blivit en av de mest populära tillämpningarna av 3D Touch — användare uppskattar precisionspositionering av markören vid textredigering.
Förhandsvisning av länkar och foton — kraftigt tryck på en länk i Safari visar en förhandsvisning av sidan (peek) utan att navigera. På samma sätt: tryck på ett foto i Messages öppnar en förstorad version. Svep uppåt i peek-läge visar åtgärder: "Öppna", "Lägg till i lässlista", "Kopiera". Alla dessa scenarier fungerar via UIContextMenuInteraction i moderna versioner av iOS.
Ritning och kreativa appar — i Procreate, Photoshop och andra ritappar styr 3D Touch tryckkraften penseltjocklek, opacitet eller färgmättnad. Appar läser UITouch.force (0.0–1.0) och omvandlar till verktygsparametrar. För ritning ger dock Apple Pencil på iPad mer exakt tryckkontroll (med stöd för lutning och azimut), så 3D Touch i kreativa appar på iPhone är mindre efterfrågat.
Vanliga frågor
3D Touch — hårdvaruteknik som mäter tryckkraft via kapacitiva sensorer i skärmen (iPhone 6S–XS). Haptic Touch — mjukvaruimitation som använder Long Press (hålla) och haptisk återkoppling från Taptic Engine. 3D Touch är snabbare (100 ms vs 500 ms) och stöder två kraftnivåer (peek + pop). Haptic Touch är tillgängligt på alla enheter med iOS 13+, inklusive iPhone XR, alla modeller iPhone 11–16, iPad och iPod touch.
I koden använd traitCollection.forceTouchCapability. Värdet .available — 3D Touch stöds, .unavailable — inte, .unknown — har ännu inte fastställts (vänta på traitCollectionDidChange). På enheter med Haptic Touch returnerar forceTouchCapability .unavailable, eftersom Haptic Touch inte använder hårdvarusensorer för kraft. För användare kontroll: Inställningar → Allmänt → Hjälpmedel → 3D Touch (endast på äldre iPhones).
Apple ersatte 3D Touch med Haptic Touch av flera skäl: höga produktionskostnader för skärmar med trycksensorer, reparationskomplexitet (sensorer integrerade i skärmen), begränsad användarmedvetenhet (många kände inte till funktionen) och övergången till OLED-skärmar med Face ID som är svårare att kalibrera för 3D Touch. Haptic Touch är billigare, enklare och tillgängligt på fler enheter.
3D Touch stöds av: iPhone 6S, 6S Plus, 7, 7 Plus, 8, 8 Plus, X, XS, XS Max. iPhone XR har inte 3D Touch (första med Haptic Touch). Alla modeller iPhone 11, 12, 13, 14, 15, 16 och SE (2:a och 3:e generationen) använder Haptic Touch. iPad har aldrig haft 3D Touch. På enheter med 3D Touch finns även känslighetsinställningar (Inställningar → Allmänt → Hjälpmedel → 3D Touch).
Ja, iOS emulerar automatiskt 3D Touch via Haptic Touch på enheter utan hårdvarustöd. UIContextMenuInteraction API fungerar likadant på alla enheter — systemet väljer själv utlösaren (3D Touch eller Long Press). För din kod är detta transparent: kontextmenyn visas på alla enheter med iOS 13+. Du behöver inte skriva separat logik för 3D Touch och Haptic Touch — använd UIContextMenuConfiguration.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också