3D Touch — az Apple hardveres technológiája, amely felismeri az iPhone kijelzőjére gyakorolt nyomás erejét, és annak szoftveres helyettesítője a Haptic Touch, amely az érintés időtartama alapján működik. A 3D Touch kalibrált nyomásérzékelőket használ, amelyek a képernyő mátrixa alatt helyezkednek el (Force Touch), és lehetővé teszik a könnyű nyomás (peek) és a mély nyomás (pop) megkülönböztetését. Az iOS 13-tól kezdve az Apple a 3D Touch-ot Haptic Touch-ra cserélte — olyan technológiára, amely a Long Press segítségével szimulálja az erős nyomást tapintási visszajelzéssel UIContextMenuInteraction.
Főbb pontok
3D Touch — hardveres beviteli technológia, amely az iPhone 6S-ben (2015) debütált. A kijelző felülete alatt kapacitív érzékelők találhatók, amelyek az üveg és a háttérvilágítás közötti távolságot mérik. Ujjal történő megnyomáskor az üveg mikronokkal behajlik, az érzékelők rögzítik a deformáció mértékét és átalakítják erőértékké (gramm). Az iOS három szintet különböztet meg: könnyű érintés (touch), közepes nyomás (peek, ~200 g) és mély nyomás (pop, ~400 g).
Haptic Touch — a 3D Touch szoftveres helyettesítője, amelyet az iOS 13-ban (2019) vezettek be. A nyomás mérése helyett a Haptic Touch Long Press-t (ujj ~500 ms-ig tartása) használ ugyanazon műveletek aktiválásához. A tapintási visszajelzés (haptic feedback) a "kattintás" érzését szimulálja, bár nem történik fizikai nyomás. Az Apple azért váltott Haptic Touch-ra, mert a 3D Touch kijelzők gyártása bonyolult és költséges volt, különösen a Face ID-s OLED panelekre való áttéréskor.
Történelmi háttér: A 3D Touch az iPhone 6S-ben jelent meg és az iPhone XS-ig (2018) maradt fenn. Az iPhone XR (2018) volt az első készülék Haptic Touch-szal a 3D Touch helyett. Az iPhone 11-től (2019) és iOS 13-tól kezdve minden új iPhone Haptic Touch-t használ. Az iPad soha nem kapott 3D Touch-t — csak Haptic Touch-t az iPadOS 13-tól. Az Apple Watch Force Touch technológiát használ a kijelzőben (eltér az iPhone 3D Touch-tól), amelyet a watchOS 7-től és a Series 6-tól eltávolítottak.
Force Touch — a nyomáserő mérésének technológiája, amelyet az Apple az iPhone 6S–XS-ben (3D Touch), a MacBook trackpadokban (2015+) és az Apple Watch-ban (Series 1–5) használ. Alapját a kijelző kerülete mentén elhelyezett kapacitív érzékelők képezik. Nyomáskor az üveg mikronokkal deformálódik, az érzékelők rögzítik a távolságváltozást és a kalibrációs görbe szerint kiszámítják az erőt. A rendszer figyelembe veszi a környezeti hőmérsékletet (24 óránkénti kalibráció) és az ujj helyzetét (a képernyő közepe érzékenyebb).
Kalibráció — a 3D Touch kritikus aspektusa. Minden iPhone-t egyedileg kalibrálnak a gyárban. Az iOS dinamikus kalibrációt is végez: az első rendszerindítás utáni nyomáskor a rendszer kéri a felhasználó maximális erejét és beállítja az érzékenységet. Az érzékelők pontossága ±10 gramm, tartomány — 0-tól 500+ grammig. A fejlesztő az UITouch.force (0.0-tól maximumig normalizált) vagy UITouch.maximumPossibleForce segítségével kaphatja meg az erőértéket.
// 3D Touch elérhetőségének ellenőrzése és nyomáserő olvasása
class ForceTouchViewController: UIViewController {
override func touchesMoved(_ touches: Set<UITouch>,
with event: UIEvent?) {
guard let touch = touches.first else { return }
// Force Touch támogatás ellenőrzése az eszközön
guard self.traitCollection.forceTouchCapability
== UIForceTouchCapability.available else {
// Az eszköz nem támogatja a 3D Touch-t
return
}
// Nyomáserő olvasása (0.0 — max)
let force = touch.force // 0.0 ... maximumPossibleForce
let maxForce = touch.maximumPossibleForce
// Normalizálás 0.0–1.0 tartományba a vizualizációhoz
let normalizedForce = force / maxForce
// Vizuális reakció a nyomáserőre (elem méretezése)
forceView.transform = CGAffineTransform(scaleX: 1.0 + normalizedForce * 0.3,
y: 1.0 + normalizedForce * 0.3)
}
}Korlátozások: A 3D Touch csak aktív érintéssel működik (UITouch.phase == .began vagy .moved). Elengedés után az erőérték nullázódik. A maximális erőérték eszközönként változik: iPhone 6S — 6.6666, iPhone 7/X — 20.0-ig (eltérő kalibráció miatt). Ne használja az erőt kritikus műveletekhez — a felhasználó nem tudhatja, mekkora erővel kell nyomnia. Mindig biztosítson alternatívát Haptic Touch-on (Long Press) keresztül.
Peek and Pop — az Apple eredeti UX-mintája, amelyet a 3D Touch-szal vezettek be az iPhone 6S-ben. Peek — könnyű nyomás (force ~0.5–1.0), amely a tartalom előnézetét mutatja (e-mail, link, fénykép) egy előnézeti kártya formájában. Pop — mélyebb nyomás (force ~2.0+), amely teljes képernyőn nyitja meg a tartalmat. A Peek támogatta az alsó műveleteket (share, copy, reply), amelyek az előnézeti kártyán felfelé húzással voltak elérhetők.
A Peek and Pop megvalósítása a UIKit-ben három összetevőből állt: UIViewControllerPreviewingDelegate (protokoll a previewingContext(_:viewControllerForLocation:) és previewingContext(_:commit:) metódusokkal), UIPreviewAction (alsó műveletek) és regisztráció a registerForPreviewing(with:sourceView:) segítségével. A fejlesztő határozta meg, hogy melyik ViewController jelenjen meg Peek-nél és hogyan nyíljon meg Pop-nál. A rendszer automatikusan parallaxis animációt és háttér elmosást adott hozzá.
| Mozdulat | Erő (norm.) | Művelet | Vizuális hatás |
|---|---|---|---|
| Érintés (Touch) | 0.0–0.3 | Szokásos interakció | Elem kiemelése |
| Könnyű nyomás (Peek) | 0.5–1.0 | Tartalom előnézete | Kártya háttér elmosással |
| Mély nyomás (Pop) | 2.0+ | Megnyitás teljes képernyőn | Kártya kinyílásának animációja |
| Felfelé húzás | — | Műveletek (share, copy) | UIPreviewAction csoport |
Áttérés UIContextMenuInteraction-ra (iOS 13): Az Apple a Peek and Pop-ot helyi menükre cserélte az UIContextMenuInteraction segítségével. Az új API egyszerűbb: nem igényel UIViewControllerPreviewingDelegate-t, támogatja a hierarchikus menüket (almenük), az SF Symbols ikonokat, és ugyanúgy működik 3D Touch-szal és Haptic Touch-szal. Migráció: a registerForPreviewing elavult iOS 13-tól. Cserélje ki UIContextMenuConfiguration-ra, amely automatikusan alkalmazkodik az eszköz képességeihez.
UIContextMenuInteraction — modern iOS API a helyi menükhöz, elérhető iOS 13-tól. Bármely UIView-hez hozzáadható az addInteraction(_:) segítségével. Az UIContextMenuInteractionDelegate delegált biztosítja a menü konfigurációját: UIContextMenuConfiguration azonosítóval, previewProvider (opcionális, előnézethez) és actionProvider (UIAction vagy UIMenu tömb). A helyi menü 3D Touch (ha elérhető) vagy Haptic Touch (más eszközökön Long Press) segítségével aktiválódik.
// UIContextMenuInteraction hierarchikus menüvel
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: "Megosztás",
image: UIImage(systemName: "square.and.arrow.up"),
handler: { _ in self.shareContent() })
let edit = UIAction(title: "Szerkesztés",
image: UIImage(systemName: "pencil"),
handler: { _ in self.editContent() })
let delete = UIAction(title: "Törlés",
image: UIImage(systemName: "trash"),
attributes: .destructive,
handler: { _ in self.deleteContent() })
return UIMenu(title: "Műveletek", children: [share, edit, delete])
}
}
}UIContextMenuConfiguration támogatja a previewProvider-t — egy kontrollert, amely előnézetként jelenik meg. Ha a previewProvider nil, a helyi menü előnézet nélkül jelenik meg. Az előnézet méretének és megjelenésének testreszabásához az UIContextMenuContentPreviewProvider-t használják. A helyi menük automatikusan kapnak tapintási visszajelzést (Haptic Touch Engine) és megjelenési animációt (scale + fade).
Haptic Touch és 3D Touch — különböző technológiák, amelyek ugyanarra az eredményre vezetnek. A 3D Touch hardveres (nyomásérzékelők a kijelzőben), a Haptic Touch szoftveres (Long Press + Taptic Engine tapintási szimulációhoz). A 3D Touch gyártási költségekkel jár (további érzékelőréteg), növeli a képernyő vastagságát és a javítás bonyolultságát. A Haptic Touch olcsóbb, egyszerűbb a gyártásban és minden modern eszközön elérhető (iPhone SE 2020, iPhone 11–16, iPad, iPod touch).
| Paraméter | 3D Touch | Haptic Touch |
|---|---|---|
| Elv | Nyomásmérés (gramm) | Időmérés (ezredmásodperc) |
| Elérhetőség | iPhone 6S–XS (korlátozott) | iPhone XR+, iPad, iPod touch |
| Sebesség | Azonnali (~100 ms) | Késleltetéssel (~500 ms) |
| Nyomási szintek | 2 (peek + pop) | 1 (helyi menü) |
| Tapintási visszajelzés | Taptic Engine (kattintás szimuláció) | Taptic Engine (kattintás szimuláció) |
| App Store | Quick Actions az ikonon | Quick Actions az ikonon |
| Kalibráció | Auto-kalibráció a felhasználó erejéhez | Nem szükséges |
| Javíthatóság | Bonyolult (érzékelők a kijelzőben) | Szabványos |
Hatás az UX-re: a 3D Touch sebessége nagyobb — a felhasználó azonnal megkapja a helyi menüt erős nyomáskor. A Haptic Touch 500 ms szünetet igényel, ami lassabbnak érződik. Az Apple ezt azonban tapintási visszajelzéssel és vizuális animációval kompenzálja. A 3D Touch-ról Haptic Touch-ra áttérő felhasználók gyakran észreveszik a sebességkülönbséget. A fejlesztők számára a migráció átlátható: az UIContextMenuInteraction mindkét technológián ugyanúgy működik.
Quick Actions — helyi menü az alkalmazás ikonján a kezdőképernyőn. Erős nyomás (3D Touch) vagy Long Press (Haptic Touch) az ikonon akár 4 gyors műveletet jelenít meg: "Új üzenet" (Messages), "Fotó készítése" (Camera), "Keresés" (Safari). Az Info.plist UIApplicationShortcutItems kulcsán vagy az UIApplicationShortcutItem delegált segítségével valósítható meg. A Quick Actions minden iOS 13+ (Haptic Touch) vagy 3D Touch készüléken elérhető.
Billentyűzet-trackpad — az iOS billentyűzetre gyakorolt erős nyomás trackpad módba kapcsolja: a billentyűk inaktívvá válnak, és az ujj mozgása mozgatja a kurzort. A 3D Touch a billentyűzet bármely pontján erős nyomással aktiválta a trackpadot. A Haptic Touch a szóköz billentyűn (spacebar) történő hosszú nyomással aktiválja a trackpadot. A trackpad mód a 3D Touch egyik legnépszerűbb alkalmazásává vált — a felhasználók értékelik a kurzor pontos pozicionálását szövegszerkesztéskor.
Linkek és fényképek előnézete — a Safari-ban egy linkre gyakorolt erős nyomás megjeleníti az oldal előnézetét (peek) anélkül, hogy navigálna. Hasonlóan: a Messages-ben egy fényképre gyakorolt nyomás megnyitja a nagyított változatot. A peek módban felfelé húzás megjeleníti a műveleteket: "Megnyitás", "Hozzáadás az olvasási listához", "Másolás". Mindezek a forgatókönyvek az UIContextMenuInteraction segítségével működnek az iOS modern verzióiban.
Rajzolás és kreatív alkalmazások — a Procreate, Photoshop és más rajzoló alkalmazásokban a 3D Touch nyomáserő vezérli az ecset vastagságát, átlátszatlanságát vagy színtelítettségét. Az alkalmazások olvassák az UITouch.force (0.0–1.0) értéket és átalakítják eszközparaméterekké. A rajzoláshoz azonban az iPad-en az Apple Pencil pontosabb nyomásszabályozást biztosít (döntés és azimut támogatással), így a 3D Touch a kreatív alkalmazásokban iPhone-on kevésbé keresett.
Gyakran Ismételt Kérdések
3D Touch — hardveres technológia, amely a nyomáserőt kapacitív érzékelőkön keresztül méri a kijelzőben (iPhone 6S–XS). Haptic Touch — szoftveres utánzat, amely Long Press-t (tartás) és a Taptic Engine tapintási visszajelzését használja. A 3D Touch gyorsabb (100 ms vs 500 ms) és két erősségi szintet támogat (peek + pop). A Haptic Touch minden iOS 13+ eszközön elérhető, beleértve az iPhone XR-t, az összes iPhone 11–16 modellt, iPad-et és iPod touch-ot.
A kódban használja a traitCollection.forceTouchCapability tulajdonságot. A .available érték — a 3D Touch támogatott, .unavailable — nem, .unknown — még nem meghatározott (várja meg a traitCollectionDidChange-t). A Haptic Touch-eszközökön a forceTouchCapability .unavailable értéket ad vissza, mivel a Haptic Touch nem használ hardveres erőérzékelőket. Felhasználók számára ellenőrzés: Beállítások → Általános → Akadálymentesítés → 3D Touch (csak régebbi iPhone-okon).
Az Apple a 3D Touch-t Haptic Touch-ra cserélte több okból: a nyomásérzékelős kijelzők magas gyártási költsége, a javítás bonyolultsága (az érzékelők integrálva vannak a kijelzőbe), a felhasználók korlátozott tudatossága (sokan nem ismerték a funkciót) és az OLED-kijelzőkre való áttérés Face ID-val, amelyeket nehezebb kalibrálni a 3D Touch-hoz. A Haptic Touch olcsóbb, egyszerűbb és több eszközön elérhető.
A 3D Touch támogatja: iPhone 6S, 6S Plus, 7, 7 Plus, 8, 8 Plus, X, XS, XS Max. Az iPhone XR nem rendelkezik 3D Touch-szal (első Haptic Touch-szal). Az összes iPhone 11, 12, 13, 14, 15, 16 és SE (2. és 3. generáció) modell Haptic Touch-t használ. Az iPad soha nem rendelkezett 3D Touch-szal. A 3D Touch-eszközökön érzékenységi beállítások is elérhetők (Beállítások → Általános → Akadálymentesítés → 3D Touch).
Igen, az iOS automatikusan emulálja a 3D Touch-t Haptic Touch-on keresztül a hardveres támogatással nem rendelkező eszközökön. Az UIContextMenuInteraction API minden eszközön ugyanúgy működik — a rendszer maga választja ki az indítót (3D Touch vagy Long Press). Az Ön kódja számára ez átlátható: a helyi menü minden iOS 13+ eszközön megjelenik. Nem kell külön logikát írnia a 3D Touch és Haptic Touch számára — használja az UIContextMenuConfiguration-t.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is