3D Touch est une technologie matérielle Apple qui reconnaît la force de pression sur l'écran de l'iPhone, et son remplacement logiciel Haptic Touch, qui fonctionne via la durée du toucher. 3D Touch utilise des capteurs de pression calibrés installés sous la matrice de l'écran (Force Touch) et permet de distinguer une pression légère (peek) d'une pression profonde (pop). À partir d'iOS 13, Apple a remplacé 3D Touch par Haptic Touch — une technologie qui simule une pression forcée via Long Press avec retour haptique UIContextMenuInteraction.
Points clés
3D Touch est une technologie d'entrée matérielle qui a fait ses débuts sur l'iPhone 6S (2015). Sous la surface de l'écran, des capteurs capacitifs mesurent la distance entre le verre et le rétroéclairage. Lorsque vous appuyez avec le doigt, le verre se déforme microscopiquement, les capteurs détectent la quantité de déformation et la convertissent en une valeur de force (grammes). iOS distingue trois niveaux : toucher léger (touch), pression moyenne (peek, ~200 g) et pression profonde (pop, ~400 g).
Haptic Touch est un remplacement logiciel de 3D Touch, introduit dans iOS 13 (2019). Au lieu de mesurer la pression, Haptic Touch utilise Long Press (maintien du doigt ~500 ms) pour activer les mêmes actions. Le retour haptique simule la sensation d'un « clic », bien qu'aucune pression physique ne se produise. Apple est passé à Haptic Touch en raison de la complexité et du coût élevé de fabrication des écrans 3D Touch, notamment lors de la transition vers les panneaux OLED avec Face ID.
Contexte historique : 3D Touch est apparu sur l'iPhone 6S et est resté jusqu'à l'iPhone XS (2018). L'iPhone XR (2018) a été le premier appareil avec Haptic Touch au lieu de 3D Touch. À partir de l'iPhone 11 (2019) et d'iOS 13, tous les nouveaux iPhones utilisent Haptic Touch. L'iPad n'a jamais reçu 3D Touch — seulement Haptic Touch avec iPadOS 13. L'Apple Watch utilise la technologie Force Touch dans l'écran (différente du 3D Touch de l'iPhone), qui a été supprimée à partir de watchOS 7 et Series 6.
Force Touch est une technologie de mesure de force utilisée par Apple dans l'iPhone 6S–XS (3D Touch), les trackpads MacBook (2015+) et l'Apple Watch (Series 1–5). Elle repose sur des capteurs capacitifs situés autour du périmètre de l'écran. Lors de la pression, le verre se déforme de quelques micromètres, les capteurs enregistrent le changement de distance et calculent la force à l'aide d'une courbe d'étalonnage. Le système prend en compte la température ambiante (étalonnage toutes les 24 heures) et la position du doigt (le centre de l'écran est plus sensible).
Étalonnage est un aspect critique de 3D Touch. Chaque iPhone est étalonné individuellement en usine. iOS effectue également un étalonnage dynamique : lors de la première pression après le démarrage, le système demande la force maximale de l'utilisateur et ajuste la sensibilité. Les capteurs ont une précision de ±10 grammes, une plage de 0 à 500+ grammes. Le développeur peut obtenir la valeur de force via UITouch.force (normalisée de 0.0 au maximum) ou UITouch.maximumPossibleForce.
// Vérification de la disponibilité de 3D Touch et lecture de la force de pression
class ForceTouchViewController: UIViewController {
override func touchesMoved(_ touches: Set<UITouch>,
with event: UIEvent?) {
guard let touch = touches.first else { return }
// Vérification de la prise en charge de Force Touch sur l'appareil
guard self.traitCollection.forceTouchCapability
== UIForceTouchCapability.available else {
// L'appareil ne prend pas en charge 3D Touch
return
}
// Lecture de la force de pression (0.0 — max)
let force = touch.force // 0.0 ... maximumPossibleForce
let maxForce = touch.maximumPossibleForce
// Normalisation dans la plage 0.0–1.0 pour la visualisation
let normalizedForce = force / maxForce
// Réaction visuelle à la force de pression (échelle de l'élément)
forceView.transform = CGAffineTransform(scaleX: 1.0 + normalizedForce * 0.3,
y: 1.0 + normalizedForce * 0.3)
}
}Limitations : 3D Touch fonctionne uniquement avec un toucher actif (UITouch.phase == .began ou .moved). Après relâchement, la valeur de force se réinitialise à zéro. La valeur de force maximale varie selon les appareils : iPhone 6S — 6,6666, iPhone 7/X — jusqu'à 20,0 (en raison d'un étalonnage différent). N'utilisez pas la force pour des actions critiques — l'utilisateur peut ne pas savoir avec quelle force appuyer. Fournissez toujours une alternative via Haptic Touch (Long Press).
Peek and Pop est le modèle UX original d'Apple introduit avec 3D Touch sur l'iPhone 6S. Peek est une pression légère (force ~0.5–1.0) qui affiche un aperçu du contenu (e-mail, lien, photo) dans une carte d'aperçu. Pop est une pression plus profonde (force ~2.0+) qui ouvre le contenu en plein écran. Peek prenait en charge des actions en bas (partager, copier, répondre), accessibles en glissant vers le haut sur la carte d'aperçu.
Implémentation de Peek and Pop dans UIKit comprenait trois composants : UIViewControllerPreviewingDelegate (un protocole avec les méthodes previewingContext(_:viewControllerForLocation:) et previewingContext(_:commit:)), UIPreviewAction (actions en bas) et l'enregistrement via registerForPreviewing(with:sourceView:). Le développeur spécifiait quel ViewController afficher lors de Peek et comment l'ouvrir lors de Pop. Le système ajoutait automatiquement une animation de parallaxe et un flou d'arrière-plan.
| Geste | Force (norm.) | Action | Effet visuel |
|---|---|---|---|
| Toucher (Touch) | 0.0–0.3 | Interaction normale | Surbrillance de l'élément |
| Pression légère (Peek) | 0.5–1.0 | Aperçu du contenu | Carte avec flou d'arrière-plan |
| Pression profonde (Pop) | 2.0+ | Ouverture en plein écran | Animation d'expansion de la carte |
| Glisser vers le haut | — | Actions (partager, copier) | Groupe UIPreviewAction |
Transition vers UIContextMenuInteraction (iOS 13) : Apple a remplacé Peek and Pop par des menus contextuels via UIContextMenuInteraction. La nouvelle API est plus simple : ne nécessite pas UIViewControllerPreviewingDelegate, prend en charge les menus hiérarchiques (sous-menus), les icônes SF Symbols et fonctionne à l'identique avec 3D Touch et Haptic Touch. Migration : registerForPreviewing est obsolète depuis iOS 13. Remplacez-le par UIContextMenuConfiguration, qui s'adapte automatiquement aux capacités de l'appareil.
UIContextMenuInteraction est une API iOS moderne pour les menus contextuels, disponible depuis iOS 13. Elle est ajoutée à toute UIView via addInteraction(_:). Le délégué UIContextMenuInteractionDelegate fournit la configuration du menu : UIContextMenuConfiguration avec un identifiant, previewProvider (optionnel, pour l'aperçu) et actionProvider (tableau de UIAction ou UIMenu). Le menu contextuel est activé par 3D Touch (si disponible) ou Haptic Touch (Long Press sur les autres appareils).
// UIContextMenuInteraction avec menu hiérarchique
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: "Partager",
image: UIImage(systemName: "square.and.arrow.up"),
handler: { _ in self.shareContent() })
let edit = UIAction(title: "Modifier",
image: UIImage(systemName: "pencil"),
handler: { _ in self.editContent() })
let delete = UIAction(title: "Supprimer",
image: UIImage(systemName: "trash"),
attributes: .destructive,
handler: { _ in self.deleteContent() })
return UIMenu(title: "Actions", children: [share, edit, delete])
}
}
}UIContextMenuConfiguration prend en charge previewProvider — un contrôleur affiché comme aperçu. Si previewProvider est nil, le menu contextuel s'affiche sans aperçu. UIContextMenuContentPreviewProvider est utilisé pour personnaliser la taille et l'apparence de l'aperçu. Les menus contextuels reçoivent automatiquement un retour haptique (Haptic Touch Engine) et une animation d'apparition (échelle + fondu).
Haptic Touch et 3D Touch sont des technologies différentes qui aboutissent au même résultat. 3D Touch est matériel (capteurs de pression dans l'écran), Haptic Touch est logiciel (Long Press + Taptic Engine pour simulation haptique). 3D Touch nécessite des coûts de fabrication (couche de capteurs supplémentaire), augmente l'épaisseur de l'écran et la complexité de la réparation. Haptic Touch est moins cher, plus simple à fabriquer et disponible sur tous les appareils modernes (iPhone SE 2020, iPhone 11–16, iPad, iPod touch).
| Paramètre | 3D Touch | Haptic Touch |
|---|---|---|
| Principe | Mesure de pression (grammes) | Mesure de temps (millisecondes) |
| Disponibilité | iPhone 6S–XS (limité) | iPhone XR+, iPad, iPod touch |
| Vitesse | Instantanée (~100 ms) | Avec retard (~500 ms) |
| Niveaux de pression | 2 (peek + pop) | 1 (menu contextuel) |
| Retour haptique | Taptic Engine (simulation de clic) | Taptic Engine (simulation de clic) |
| App Store | Quick Actions sur l'icône | Quick Actions sur l'icône |
| Étalonnage | Auto-étalonnage selon la force utilisateur | Non requis |
| Réparabilité | Complexe (capteurs dans l'écran) | Standard |
Impact sur l'UX : la vitesse de 3D Touch est plus élevée — l'utilisateur obtient le menu contextuel immédiatement en appuyant fort. Haptic Touch nécessite une pause de 500 ms, ce qui semble plus lent. Cependant, Apple compense avec un retour haptique et une animation visuelle. Les utilisateurs qui sont passés de 3D Touch à Haptic Touch remarquent souvent la différence de vitesse. Pour les développeurs, la migration est transparente : UIContextMenuInteraction fonctionne à l'identique sur les deux technologies.
Quick Actions — un menu contextuel sur l'icône de l'application sur l'écran d'accueil. Une pression forte (3D Touch) ou Long Press (Haptic Touch) sur l'icône affiche jusqu'à 4 actions rapides : "Nouveau message" (Messages), "Prendre une photo" (Camera), "Rechercher" (Safari). Implémenté via la clé Info.plist UIApplicationShortcutItems ou via le délégué UIApplicationShortcutItem. Les Quick Actions sont disponibles sur tous les appareils avec iOS 13+ (Haptic Touch) ou 3D Touch.
Trackpad du clavier — une pression forte sur le clavier iOS le bascule en mode trackpad : les touches deviennent inactives et le mouvement du doigt déplace le curseur. 3D Touch activait le trackpad par une pression forte n'importe où sur le clavier. Haptic Touch active le trackpad par une pression longue sur la barre d'espace. Le mode trackpad est devenu l'une des utilisations les plus populaires de 3D Touch — les utilisateurs apprécient le positionnement précis du curseur lors de l'édition de texte.
Aperçu des liens et photos — une pression forte sur un lien dans Safari affiche un aperçu de la page (peek) sans naviguer. De même : appuyer sur une photo dans Messages ouvre une version agrandie. Glisser vers le haut en mode peek affiche des actions : "Ouvrir", "Ajouter à la liste de lecture", "Copier". Tous ces scénarios fonctionnent via UIContextMenuInteraction dans les versions modernes d'iOS.
Applications de dessin et créatives — dans Procreate, Photoshop et autres applications de dessin, la force de pression de 3D Touch contrôle l'épaisseur du pinceau, l'opacité ou la saturation des couleurs. Les applications lisent UITouch.force (0.0–1.0) et le convertissent en paramètres d'outil. Cependant, pour le dessin, l'Apple Pencil sur iPad offre un contrôle de pression plus précis (avec prise en charge de l'inclinaison et de l'azimut), donc 3D Touch dans les applications créatives sur iPhone est moins demandé.
Foire aux questions
3D Touch est une technologie matérielle qui mesure la force de pression via des capteurs capacitifs dans l'écran (iPhone 6S–XS). Haptic Touch est une simulation logicielle utilisant Long Press et le retour haptique du Taptic Engine. 3D Touch est plus rapide (100 ms vs 500 ms) et prend en charge deux niveaux de force (peek + pop). Haptic Touch est disponible sur tous les appareils avec iOS 13+, y compris l'iPhone XR, tous les modèles d'iPhone 11–16, iPad et iPod touch.
Dans le code, utilisez traitCollection.forceTouchCapability. La valeur .available signifie que 3D Touch est pris en charge, .unavailable signifie non, .unknown signifie pas encore déterminé (attendez traitCollectionDidChange). Sur les appareils avec Haptic Touch, forceTouchCapability retourne .unavailable, car Haptic Touch n'utilise pas de capteurs de force matériels. Pour les utilisateurs : vérifiez dans Réglages → Accessibilité → Toucher → 3D Touch (uniquement sur les anciens iPhones).
Apple a remplacé 3D Touch par Haptic Touch pour plusieurs raisons : coût de production élevé des écrans avec capteurs de pression, complexité de réparation (capteurs intégrés à l'écran), sensibilisation limitée des utilisateurs (beaucoup ne connaissaient pas la fonction) et la transition vers les écrans OLED avec Face ID, plus difficiles à étalonner pour 3D Touch. Haptic Touch est moins cher, plus simple et disponible sur un plus grand nombre d'appareils.
3D Touch est pris en charge par : iPhone 6S, 6S Plus, 7, 7 Plus, 8, 8 Plus, X, XS, XS Max. L'iPhone XR n'a pas 3D Touch (premier avec Haptic Touch). Tous les modèles d'iPhone 11, 12, 13, 14, 15, 16 et SE (2e et 3e génération) utilisent Haptic Touch. L'iPad n'a jamais eu 3D Touch. Sur les appareils avec 3D Touch, les réglages de sensibilité sont également disponibles (Réglages → Accessibilité → Toucher → 3D Touch).
Oui, iOS émule automatiquement 3D Touch via Haptic Touch sur les appareils sans support matériel. L'API UIContextMenuInteraction fonctionne à l'identique sur tous les appareils — le système sélectionne lui-même le déclencheur (3D Touch ou Long Press). C'est transparent pour votre code : le menu contextuel apparaît sur tous les appareils avec iOS 13+. Vous n'avez pas besoin d'écrire de logique séparée pour 3D Touch et Haptic Touch — utilisez UIContextMenuConfiguration.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi