3D Touch — tehnologia hardware Apple care recunoaște forța de apăsare pe ecranul iPhone și înlocuitorul său software Haptic Touch, care funcționează pe baza duratei de atingere. 3D Touch utilizează senzori de presiune calibrați montați sub matricea ecranului (Force Touch) și permite distingerea între o apăsare ușoară (peek) și una profundă (pop). Începând cu iOS 13, Apple a înlocuit 3D Touch cu Haptic Touch — o tehnologie care simulează apăsarea forțată prin Long Press cu feedback tactil UIContextMenuInteraction.
Principalele
3D Touch — tehnologia hardware de intrare, debutată în iPhone 6S (2015). Sub suprafața ecranului se află senzori capacitivi care măsoară distanța dintre sticlă și iluminarea de fundal. La apăsarea cu degetul, sticla se îndoaie la nivel de microni, senzorii înregistrează magnitudinea deformării și o transformă într-o valoare a forței (grame). iOS distinge trei niveluri: atingere ușoară (touch), apăsare medie (peek, ~200 g) și apăsare profundă (pop, ~400 g).
Haptic Touch — înlocuitorul software al 3D Touch, introdus în iOS 13 (2019). În loc să măsoare presiunea, Haptic Touch utilizează Long Press (menținerea degetului ~500 ms) pentru a activa aceleași acțiuni. Feedback-ul tactil (haptic feedback) simulează senzația de "clic", deși nu are loc nicio apăsare fizică. Apple a trecut la Haptic Touch din cauza complexității și costului ridicat de producție al ecranelor 3D Touch, în special la tranziția către panourile OLED cu Face ID.
Context istoric: 3D Touch a apărut în iPhone 6S și s-a păstrat până la iPhone XS (2018). iPhone XR (2018) a fost primul dispozitiv cu Haptic Touch în loc de 3D Touch. Începând cu iPhone 11 (2019) și iOS 13, toate iPhone-urile noi utilizează Haptic Touch. iPad nu a primit niciodată 3D Touch — doar Haptic Touch din iPadOS 13. Apple Watch utilizează tehnologia Force Touch în ecran (diferită de 3D Touch pe iPhone), care a fost eliminată începând cu watchOS 7 și Series 6.
Force Touch — tehnologia de măsurare a forței de apăsare utilizată de Apple în iPhone 6S–XS (3D Touch), trackpad-urile MacBook (2015+) și Apple Watch (Series 1–5). La bază se află senzori capacitivi amplasați pe perimetrul ecranului. La apăsare, sticla se deformează cu microni, senzorii înregistrează schimbarea distanței și calculează forța conform unei curbe de calibrare. Sistemul ia în considerare temperatura mediului (calibrare la fiecare 24 de ore) și poziția degetului (centrul ecranului este mai sensibil).
Calibrarea — un aspect critic al 3D Touch. Fiecare iPhone este calibrat individual în fabrică. iOS efectuează și o calibrare dinamică: la prima apăsare după pornire, sistemul solicită forța maximă a utilizatorului și ajustează sensibilitatea. Senzorii au o precizie de ±10 grame, intervalul — de la 0 la 500+ grame. Dezvoltatorul poate obține valoarea force prin UITouch.force (normalizată de la 0.0 la maxim) sau UITouch.maximumPossibleForce.
// Verificarea disponibilității 3D Touch și citirea forței de apăsare
class ForceTouchViewController: UIViewController {
override func touchesMoved(_ touches: Set<UITouch>,
with event: UIEvent?) {
guard let touch = touches.first else { return }
// Verificarea suportului Force Touch pe dispozitiv
guard self.traitCollection.forceTouchCapability
== UIForceTouchCapability.available else {
// Dispozitivul nu suportă 3D Touch
return
}
// Citirea forței de apăsare (0.0 — max)
let force = touch.force // 0.0 ... maximumPossibleForce
let maxForce = touch.maximumPossibleForce
// Normalizare în intervalul 0.0–1.0 pentru vizualizare
let normalizedForce = force / maxForce
// Reacție vizuală la forța de apăsare (scalarea elementului)
forceView.transform = CGAffineTransform(scaleX: 1.0 + normalizedForce * 0.3,
y: 1.0 + normalizedForce * 0.3)
}
}Limitări: 3D Touch funcționează doar cu atingere activă (UITouch.phase == .began sau .moved). După eliberare, valoarea force se resetează. Valoarea maximă a force variază între dispozitive: iPhone 6S — 6.6666, iPhone 7/X — până la 20.0 (din cauza calibrării diferite). Nu utilizați force pentru acțiuni critice — utilizatorul poate să nu știe cu ce forță să apese. Oferiți întotdeauna o alternativă prin Haptic Touch (Long Press).
Peek and Pop — modelul UX original Apple, introdus cu 3D Touch în iPhone 6S. Peek — apăsare ușoară (force ~0.5–1.0) care arată o previzualizare a conținutului (email, link, fotografie) sub forma unei cărți de previzualizare. Pop — apăsare mai profundă (force ~2.0+) care deschide conținutul pe ecran complet. Peek suporta acțiuni în partea de jos (share, copy, reply), accesibile prin glisarea în sus pe cartea de previzualizare.
Implementarea Peek and Pop în UIKit includea trei componente: UIViewControllerPreviewingDelegate (protocol cu metodele previewingContext(_:viewControllerForLocation:) și previewingContext(_:commit:)), UIPreviewAction (acțiuni în partea de jos) și înregistrarea prin registerForPreviewing(with:sourceView:). Dezvoltatorul specifica care ViewController să fie afișat la Peek și cum să se deschidă la Pop. Sistemul adăuga automat animație de paralaxă și estompare a fundalului.
| Gest | Forță (norm.) | Acțiune | Efect vizual |
|---|---|---|---|
| Atingere (Touch) | 0.0–0.3 | Interacțiune obișnuită | Evidențierea elementului |
| Apăsare ușoară (Peek) | 0.5–1.0 | Previzualizare conținut | Carte cu estompare fundal |
| Apăsare profundă (Pop) | 2.0+ | Deschidere pe ecran complet | Animație de desfășurare a cărții |
| Glisare în sus | — | Acțiuni (share, copy) | Grup UIPreviewAction |
Tranziția la UIContextMenuInteraction (iOS 13): Apple a înlocuit Peek and Pop cu meniuri contextuale prin UIContextMenuInteraction. Noul API este mai simplu: nu necesită UIViewControllerPreviewingDelegate, suportă meniuri ierarhice (submenus), iconițe SF Symbols și funcționează la fel cu 3D Touch și Haptic Touch. Migrare: registerForPreviewing este depreciat din iOS 13. Înlocuiți-l cu UIContextMenuConfiguration, care se adaptează automat la capacitățile dispozitivului.
UIContextMenuInteraction — API modern iOS pentru meniuri contextuale, disponibil din iOS 13. Se adaugă la orice UIView prin addInteraction(_:). Delegatul UIContextMenuInteractionDelegate furnizează configurația meniului: UIContextMenuConfiguration cu identificator, previewProvider (opțional, pentru previzualizare) și actionProvider (matrice de UIAction sau UIMenu). Meniul contextual se activează prin 3D Touch (dacă este disponibil) sau Haptic Touch (Long Press pe celelalte dispozitive).
// UIContextMenuInteraction cu meniu ierarhic
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: "Partajează",
image: UIImage(systemName: "square.and.arrow.up"),
handler: { _ in self.shareContent() })
let edit = UIAction(title: "Editează",
image: UIImage(systemName: "pencil"),
handler: { _ in self.editContent() })
let delete = UIAction(title: "Șterge",
image: UIImage(systemName: "trash"),
attributes: .destructive,
handler: { _ in self.deleteContent() })
return UIMenu(title: "Acțiuni", children: [share, edit, delete])
}
}
}UIContextMenuConfiguration suportă previewProvider — un controler afișat ca previzualizare. Dacă previewProvider este nil, meniul contextual este afișat fără previzualizare. Pentru ajustarea dimensiunii și aspectului previzualizării se utilizează UIContextMenuContentPreviewProvider. Meniurile contextuale primesc automat feedback tactil (Haptic Touch Engine) și animație de apariție (scale + fade).
Haptic Touch și 3D Touch — tehnologii diferite care duc la același rezultat. 3D Touch este hardware (senzori de presiune în ecran), Haptic Touch este software (Long Press + Taptic Engine pentru simulare tactilă). 3D Touch necesită costuri de producție (strat suplimentar de senzori), crește grosimea ecranului și complexitatea reparațiilor. Haptic Touch este mai ieftin, mai simplu de produs și disponibil pe toate dispozitivele moderne (iPhone SE 2020, iPhone 11–16, iPad, iPod touch).
| Parametru | 3D Touch | Haptic Touch |
|---|---|---|
| Principiu | Măsurarea presiunii (grame) | Măsurarea timpului (milisecunde) |
| Disponibilitate | iPhone 6S–XS (limitat) | iPhone XR+, iPad, iPod touch |
| Viteză | Instant (~100 ms) | Cu întârziere (~500 ms) |
| Niveluri de apăsare | 2 (peek + pop) | 1 (meniu contextual) |
| Feedback tactil | Taptic Engine (simulare clic) | Taptic Engine (simulare clic) |
| App Store | Quick Actions pe iconiță | Quick Actions pe iconiță |
| Calibrare | Auto-calibrare la forța utilizatorului | Nu este necesară |
| Reparabilitate | Complexă (senzori în ecran) | Standard |
Impact asupra UX: viteza 3D Touch este mai mare — utilizatorul primește meniul contextual imediat la apăsarea forțată. Haptic Touch necesită o pauză de 500 ms, ceea ce se simte mai lent. Cu toate acestea, Apple compensează acest lucru prin feedback tactil și animație vizuală. Utilizatorii care trec de la 3D Touch la Haptic Touch observă adesea diferența de viteză. Pentru dezvoltatori, migrarea este transparentă: UIContextMenuInteraction funcționează la fel pe ambele tehnologii.
Quick Actions — meniu contextual pe iconița aplicației pe ecranul principal. Apăsarea forțată (3D Touch) sau Long Press (Haptic Touch) pe iconiță afișează până la 4 acțiuni rapide: "Mesaj nou" (Messages), "Fă o fotografie" (Camera), "Caută" (Safari). Se implementează prin cheia Info.plist UIApplicationShortcutItems sau prin delegatul UIApplicationShortcutItem. Quick Actions sunt disponibile pe toate dispozitivele cu iOS 13+ (Haptic Touch) sau 3D Touch.
Tastatură-trackpad — apăsarea forțată pe tastatura iOS o comută în modul trackpad: tastele devin inactive, iar mișcarea degetului mută cursorul. 3D Touch activa trackpad-ul prin apăsare forțată în orice loc al tastaturii. Haptic Touch activează trackpad-ul prin apăsare lungă pe bara de spațiu (spacebar). Modul trackpad a devenit una dintre cele mai populare aplicații ale 3D Touch — utilizatorii apreciază poziționarea precisă a cursorului la editarea textului.
Previzualizarea linkurilor și fotografiilor — apăsarea forțată pe un link în Safari arată o previzualizare a paginii (peek) fără a naviga. Similar: apăsarea pe o fotografie în Messages deschide o versiune mărită. Glisarea în sus în modul peek arată acțiunile: "Deschide", "Adaugă la lista de lectură", "Copiază". Toate aceste scenarii funcționează prin UIContextMenuInteraction în versiunile moderne de iOS.
Desen și aplicații creative — în Procreate, Photoshop și alte aplicații de desen, forța de apăsare 3D Touch controlează grosimea pensulei, opacitatea sau saturația culorii. Aplicațiile citesc UITouch.force (0.0–1.0) și îl transformă în parametri ai instrumentului. Cu toate acestea, pentru desen, Apple Pencil pe iPad oferă un control mai precis al presiunii (cu suport pentru înclinare și azimut), deci 3D Touch în aplicațiile creative pe iPhone este mai puțin solicitat.
Întrebări frecvente
3D Touch — tehnologie hardware care măsoară forța de apăsare prin senzori capacitivi în ecran (iPhone 6S–XS). Haptic Touch — imitație software care utilizează Long Press (menținere) și feedback tactil Taptic Engine. 3D Touch este mai rapid (100 ms vs 500 ms) și suportă două niveluri de forță (peek + pop). Haptic Touch este disponibil pe toate dispozitivele cu iOS 13+, inclusiv iPhone XR, toate modelele iPhone 11–16, iPad și iPod touch.
În cod, utilizați traitCollection.forceTouchCapability. Valoarea .available — 3D Touch este suportat, .unavailable — nu, .unknown — încă nedeterminat (așteptați traitCollectionDidChange). Pe dispozitivele cu Haptic Touch, forceTouchCapability returnează .unavailable, deoarece Haptic Touch nu utilizează senzori hardware de forță. Pentru utilizatori verificare: Setări → General → Accesibilitate → 3D Touch (doar pe iPhone-uri vechi).
Apple a înlocuit 3D Touch cu Haptic Touch din mai multe motive: costul ridicat de producție al ecranelor cu senzori de presiune, complexitatea reparațiilor (senzorii integrați în ecran), conștientizarea limitată a utilizatorilor (mulți nu cunoșteau funcția) și tranziția la ecrane OLED cu Face ID, care sunt mai greu de calibrat pentru 3D Touch. Haptic Touch este mai ieftin, mai simplu și disponibil pe un număr mai mare de dispozitive.
3D Touch este suportat de: iPhone 6S, 6S Plus, 7, 7 Plus, 8, 8 Plus, X, XS, XS Max. iPhone XR nu are 3D Touch (primul cu Haptic Touch). Toate modelele iPhone 11, 12, 13, 14, 15, 16 și SE (generațiile 2 și 3) utilizează Haptic Touch. iPad nu a avut niciodată 3D Touch. Pe dispozitivele cu 3D Touch sunt disponibile și setări de sensibilitate (Setări → General → Accesibilitate → 3D Touch).
Da, iOS emulează automat 3D Touch prin Haptic Touch pe dispozitive fără suport hardware. API-ul UIContextMenuInteraction funcționează la fel pe toate dispozitivele — sistemul alege singur declanșatorul (3D Touch sau Long Press). Pentru codul dvs. este transparent: meniul contextual apare pe toate dispozitivele cu iOS 13+. Nu trebuie să scrieți logică separată pentru 3D Touch și Haptic Touch — utilizați UIContextMenuConfiguration.
Rezumat
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și