3D Touch — hardwarová technologie Apple, která rozpoznává sílu stisku na displeji iPhonu, a její softwarová náhrada Haptic Touch, fungující na základě délky dotyku. 3D Touch využívá kalibrované tlakové senzory umístěné pod matricí obrazovky (Force Touch) a umožňuje rozlišit lehký stisk (peek) a hluboký (pop). Od iOS 13 Apple nahradil 3D Touch technologií Haptic Touch — technologií simulující silný stisk pomocí Long Press s haptickou odezvou UIContextMenuInteraction.
Hlavní body
3D Touch — hardwarová vstupní technologie, debutující v iPhone 6S (2015). Pod povrchem displeje jsou kapacitní senzory měřící vzdálenost mezi sklem a podsvícením. Při stisku prstem se sklo mikronově prohýbá, senzory zaznamenávají velikost deformace a převádějí ji na hodnotu síly (gramy). iOS rozlišuje tři úrovně: lehký dotyk (touch), střední stisk (peek, ~200 g) a hluboký stisk (pop, ~400 g).
Haptic Touch — softwarová náhrada 3D Touch, představená v iOS 13 (2019). Místo měření tlaku Haptic Touch využívá Long Press (držení prstu ~500 ms) k aktivaci stejných akcí. Haptická odezva (haptic feedback) simuluje pocit "kliknutí", i když nedochází k žádnému fyzickému stisku. Apple přešel na Haptic Touch kvůli složitosti a vysokým výrobním nákladům displejů 3D Touch, zejména při přechodu na OLED panely s Face ID.
Historické pozadí: 3D Touch se objevil v iPhone 6S a zůstal až do iPhone XS (2018). iPhone XR (2018) se stal prvním zařízením s Haptic Touch místo 3D Touch. Od iPhone 11 (2019) a iOS 13 všechna nová iPhony používají Haptic Touch. iPad nikdy nedostal 3D Touch — pouze Haptic Touch od iPadOS 13. Apple Watch používá technologii Force Touch v displeji (liší se od iPhone 3D Touch), která byla odstraněna od watchOS 7 a Series 6.
Force Touch — technologie měření síly stisku používaná Apple v iPhone 6S–XS (3D Touch), trackpadech MacBook (2015+) a Apple Watch (Series 1–5). V základu jsou kapacitní senzory rozmístěné po obvodu displeje. Při stisku se sklo deformuje o mikrony, senzory zaznamenávají změnu vzdálenosti a vypočítávají sílu podle kalibrační křivky. Systém zohledňuje okolní teplotu (kalibrace každých 24 hodin) a polohu prstu (střed obrazovky je citlivější).
Kalibrace — kritický aspekt 3D Touch. Každý iPhone je kalibrován individuálně v továrně. iOS také provádí dynamickou kalibraci: při prvním stisku po spuštění systém požádá o maximální sílu uživatele a upraví citlivost. Senzory mají přesnost ±10 gramů, rozsah — od 0 do 500+ gramů. Vývojář může získat hodnotu force pomocí UITouch.force (normalizované od 0.0 do maxima) nebo UITouch.maximumPossibleForce.
// Kontrola dostupnosti 3D Touch a čtení síly stisku
class ForceTouchViewController: UIViewController {
override func touchesMoved(_ touches: Set<UITouch>,
with event: UIEvent?) {
guard let touch = touches.first else { return }
// Kontrola podpory Force Touch na zařízení
guard self.traitCollection.forceTouchCapability
== UIForceTouchCapability.available else {
// Zařízení nepodporuje 3D Touch
return
}
// Čtení síly stisku (0.0 — max)
let force = touch.force // 0.0 ... maximumPossibleForce
let maxForce = touch.maximumPossibleForce
// Normalizace do rozsahu 0.0–1.0 pro vizualizaci
let normalizedForce = force / maxForce
// Vizuální reakce na sílu stisku (měřítko prvku)
forceView.transform = CGAffineTransform(scaleX: 1.0 + normalizedForce * 0.3,
y: 1.0 + normalizedForce * 0.3)
}
}Omezení: 3D Touch funguje pouze s aktivním dotykem (UITouch.phase == .began nebo .moved). Po uvolnění se hodnota force vynuluje. Maximální hodnota force se liší mezi zařízeními: iPhone 6S — 6.6666, iPhone 7/X — až 20.0 (kvůli odlišné kalibraci). Nepoužívejte force pro kritické akce — uživatel nemusí vědět, jakou silou mačkat. Vždy poskytněte alternativu přes Haptic Touch (Long Press).
Peek and Pop — původní UX vzor Apple, představený s 3D Touch v iPhone 6S. Peek — lehký stisk (force ~0.5–1.0), který zobrazuje náhled obsahu (email, odkaz, fotka) ve formě náhledové karty. Pop — hlubší stisk (force ~2.0+), který otevírá obsah na celou obrazovku. Peek podporoval akce dole (share, copy, reply), přístupné posunutím nahoru na náhledové kartě.
Implementace Peek and Pop v UIKit zahrnovala tři komponenty: UIViewControllerPreviewingDelegate (protokol s metodami previewingContext(_:viewControllerForLocation:) a previewingContext(_:commit:)), UIPreviewAction (akce dole) a registraci přes registerForPreviewing(with:sourceView:). Vývojář určoval, který ViewController se zobrazí při Peek a jak se otevře při Pop. Systém automaticky přidával animaci paralaxy a rozostření pozadí.
| Gesto | Síla (norm.) | Akce | Vizuální efekt |
|---|---|---|---|
| Dotek (Touch) | 0.0–0.3 | Běžná interakce | Zvýraznění prvku |
| Lehký stisk (Peek) | 0.5–1.0 | Náhled obsahu | Karta s rozostřením pozadí |
| Hluboký stisk (Pop) | 2.0+ | Otevření na celou obrazovku | Animace rozbalení karty |
| Posun nahoru | — | Akce (share, copy) | Skupina UIPreviewAction |
Přechod na UIContextMenuInteraction (iOS 13): Apple nahradil Peek and Pop kontextovými menu přes UIContextMenuInteraction. Nové API je jednodušší: nevyžaduje UIViewControllerPreviewingDelegate, podporuje hierarchická menu (podmenu), ikony SF Symbols a funguje stejně s 3D Touch i Haptic Touch. Migrace: registerForPreviewing je od iOS 13 zastaralý. Nahraďte jej UIContextMenuConfiguration, které se automaticky přizpůsobí možnostem zařízení.
UIContextMenuInteraction — moderní iOS API pro kontextová menu, dostupné od iOS 13. Přidává se k libovolnému UIView pomocí addInteraction(_:). Delegát UIContextMenuInteractionDelegate poskytuje konfiguraci menu: UIContextMenuConfiguration s identifikátorem, previewProvider (volitelně, pro náhled) a actionProvider (pole UIAction nebo UIMenu). Kontextové menu se aktivuje 3D Touch (pokud je k dispozici) nebo Haptic Touch (Long Press na ostatních zařízeních).
// UIContextMenuInteraction s hierarchickým menu
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: "Sdílet",
image: UIImage(systemName: "square.and.arrow.up"),
handler: { _ in self.shareContent() })
let edit = UIAction(title: "Upravit",
image: UIImage(systemName: "pencil"),
handler: { _ in self.editContent() })
let delete = UIAction(title: "Smazat",
image: UIImage(systemName: "trash"),
attributes: .destructive,
handler: { _ in self.deleteContent() })
return UIMenu(title: "Akce", children: [share, edit, delete])
}
}
}UIContextMenuConfiguration podporuje previewProvider — controller zobrazený jako náhled. Pokud je previewProvider nil, kontextové menu se zobrazí bez náhledu. Pro přizpůsobení velikosti a vzhledu náhledu se používá UIContextMenuContentPreviewProvider. Kontextová menu automaticky získávají haptickou odezvu (Haptic Touch Engine) a animaci objevení (scale + fade).
Haptic Touch a 3D Touch — různé technologie vedoucí ke stejnému výsledku. 3D Touch je hardwarový (tlakové senzory v displeji), Haptic Touch je softwarový (Long Press + Taptic Engine pro haptickou simulaci). 3D Touch vyžaduje výrobní náklady (další vrstva senzorů), zvyšuje tloušťku obrazovky a složitost oprav. Haptic Touch je levnější, jednodušší na výrobu a dostupný na všech moderních zařízeních (iPhone SE 2020, iPhone 11–16, iPad, iPod touch).
| Parametr | 3D Touch | Haptic Touch |
|---|---|---|
| Princip | Měření tlaku (gramy) | Měření času (milisekundy) |
| Dostupnost | iPhone 6S–XS (omezená) | iPhone XR+, iPad, iPod touch |
| Rychlost | Okamžitě (~100 ms) | S prodlevou (~500 ms) |
| Úrovně stisku | 2 (peek + pop) | 1 (kontextové menu) |
| Haptická odezva | Taptic Engine (simulace kliknutí) | Taptic Engine (simulace kliknutí) |
| App Store | Quick Actions na ikoně | Quick Actions na ikoně |
| Kalibrace | Automatická na sílu uživatele | Není vyžadována |
| Opravitelnost | Složitá (senzory v displeji) | Standardní |
Dopad na UX: rychlost 3D Touch je vyšší — uživatel obdrží kontextové menu okamžitě při silném stisku. Haptic Touch vyžaduje pauzu 500 ms, což působí pomaleji. Apple to však kompenzuje haptickou odezvou a vizuální animací. Uživatelé přecházející z 3D Touch na Haptic Touch si často všímají rozdílu v rychlosti. Pro vývojáře je migrace transparentní: UIContextMenuInteraction funguje stejně na obou technologiích.
Quick Actions — kontextové menu na ikoně aplikace na domovské obrazovce. Silný stisk (3D Touch) nebo Long Press (Haptic Touch) na ikoně zobrazí až 4 rychlé akce: "Nová zpráva" (Messages), "Vyfotit" (Camera), "Hledat" (Safari). Implementuje se přes klíč Info.plist UIApplicationShortcutItems nebo přes delegáta UIApplicationShortcutItem. Quick Actions jsou dostupné na všech zařízeních s iOS 13+ (Haptic Touch) nebo 3D Touch.
Klávesnice-trackpad — silný stisk na klávesnici iOS ji přepne do režimu trackpadu: klávesy se stanou neaktivními a pohyb prstu posouvá kurzor. 3D Touch aktivoval trackpad silným stiskem na libovolném místě klávesnice. Haptic Touch aktivuje trackpad dlouhým stiskem na mezerníku (spacebar). Režim trackpadu se stal jednou z nejoblíbenějších aplikací 3D Touch — uživatelé oceňují přesné umístění kurzoru při úpravě textu.
Náhled odkazů a fotek — silný stisk na odkaz v Safari zobrazí náhled stránky (peek) bez přechodu. Podobně: stisk na fotku v Messages otevře zvětšenou verzi. Posun nahoru v režimu peek zobrazí akce: "Otevřít", "Přidat do seznamu četby", "Kopírovat". Všechny tyto scénáře fungují přes UIContextMenuInteraction v moderních verzích iOS.
Kreslení a kreativní aplikace — v Procreate, Photoshop a dalších kreslicích aplikacích síla stisku 3D Touch řídí tloušťku štětce, neprůhlednost nebo sytost barvy. Aplikace čtou UITouch.force (0.0–1.0) a převádějí na parametry nástroje. Pro kreslení však Apple Pencil na iPadu poskytuje přesnější kontrolu tlaku (s podporou náklonu a azimutu), takže 3D Touch v kreativních aplikacích na iPhonu je méně žádaný.
Často kladené otázky
3D Touch — hardwarová technologie měřící sílu stisku přes kapacitní senzory v displeji (iPhone 6S–XS). Haptic Touch — softwarová imitace využívající Long Press (držení) a haptickou odezvu Taptic Engine. 3D Touch je rychlejší (100 ms vs 500 ms) a podporuje dvě úrovně síly (peek + pop). Haptic Touch je dostupný na všech zařízeních s iOS 13+, včetně iPhone XR, všech modelů iPhone 11–16, iPadu a iPod touch.
V kódu použijte traitCollection.forceTouchCapability. Hodnota .available — 3D Touch je podporován, .unavailable — ne, .unknown — ještě není určeno (počkejte na traitCollectionDidChange). Na zařízeních s Haptic Touch vrací forceTouchCapability .unavailable, protože Haptic Touch nepoužívá hardwarové senzory síly. Pro uživatele kontrola: Nastavení → Obecné → Zpřístupnění → 3D Touch (pouze na starších iPhonech).
Apple nahradil 3D Touch Haptic Touch z několika důvodů: vysoké výrobní náklady displejů s tlakovými senzory, složitost oprav (senzory integrované v displeji), omezené povědomí uživatelů (mnozí funkci neznali) a přechod na OLED displeje s Face ID, které se hůře kalibrují pro 3D Touch. Haptic Touch je levnější, jednodušší a dostupný na větším počtu zařízení.
3D Touch podporují: iPhone 6S, 6S Plus, 7, 7 Plus, 8, 8 Plus, X, XS, XS Max. iPhone XR nemá 3D Touch (první s Haptic Touch). Všechny modely iPhone 11, 12, 13, 14, 15, 16 a SE (2. a 3. generace) používají Haptic Touch. iPad nikdy neměl 3D Touch. Na zařízeních s 3D Touch jsou také k dispozici nastavení citlivosti (Nastavení → Obecné → Zpřístupnění → 3D Touch).
Ano, iOS automaticky emuluje 3D Touch prostřednictvím Haptic Touch na zařízeních bez hardwarové podpory. API UIContextMenuInteraction funguje stejně na všech zařízeních — systém sám vybírá spouštěč (3D Touch nebo Long Press). Pro váš kód je to transparentní: kontextové menu se zobrazí na všech zařízeních s iOS 13+. Nemusíte psát samostatnou logiku pro 3D Touch a Haptic Touch — použijte UIContextMenuConfiguration.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také