3D Touch: що це, технології Force Touch та Haptic Touch

Автор: IT Sectr Опубліковано: 2026-02-28 Час читання: 10 хв

3D Touch — апаратна технологія Apple, яка розпізнає силу натискання на дисплей iPhone, та її програмна заміна Haptic Touch, що працює через тривалість дотику. 3D Touch використовує калібровані датчики тиску, встановлені під матрицею екрана (Force Touch), і дозволяє розрізняти легке натискання (peek) та глибоке (pop). Починаючи з iOS 13, Apple замінила 3D Touch на Haptic Touch — технологію, яка імітує силове натискання через Long Press з тактильним відгуком UIContextMenuInteraction.

Головне

  • Сила натискання — 3D Touch вимірює тиск у грамах; Haptic Touch використовує час утримання
  • Peek and Pop — оригінальний UX-патерн 3D Touch: легке натискання (peek) для попереднього перегляду, глибоке (pop) для відкриття
  • UIContextMenuInteraction — сучасний API iOS для контекстних меню, що працює з Haptic Touch
  • Force Touch — технологія Apple, яка вимірює тиск через ємнісні датчики в дисплеї
  • UIForceTouchCapability — метод iOS для перевірки доступності 3D Touch на пристрої

Що таке 3D Touch та Haptic Touch?

3D Touch — апаратна технологія введення, яка дебютувала в iPhone 6S (2015). Під поверхнею дисплея розташовані ємнісні датчики, які вимірюють відстань між склом та підсвічуванням. При натисканні пальцем скло мікронно прогинається, датчики фіксують величину деформації та перетворюють її на значення сили (грами). iOS розрізняє три рівні: легкий дотик (touch), середнє натискання (peek, ~200 г) та глибоке натискання (pop, ~400 г).

Haptic Touch — програмна заміна 3D Touch, представлена в iOS 13 (2019). Замість вимірювання тиску Haptic Touch використовує Long Press (утримання пальця ~500 мс) для активації тих самих дій. Тактильний відгук імітує відчуття "кліку", хоча жодного фізичного натискання не відбувається. Apple перейшла на Haptic Touch через складність та дорожнечу виробництва 3D Touch-дисплеїв, особливо при переході на OLED-панелі з Face ID.

Історична довідка: 3D Touch з'явився в iPhone 6S і зберігався до iPhone XS (2018). iPhone XR (2018) став першим пристроєм з Haptic Touch замість 3D Touch. Починаючи з iPhone 11 (2019) та iOS 13, всі нові iPhone використовують Haptic Touch. iPad ніколи не отримував 3D Touch — тільки Haptic Touch з iPadOS 13. Apple Watch використовує технологію Force Touch у дисплеї (відрізняється від iPhone 3D Touch), яка була видалена починаючи з watchOS 7 та Series 6.

Технологія Force Touch: як вимірюється тиск

Force Touch — технологія вимірювання сили натискання, яку використовує Apple в iPhone 6S–XS (3D Touch), трекпадах MacBook (2015+) та Apple Watch (Series 1–5). В основі лежать ємнісні датчики, розташовані по периметру дисплея. При натисканні скло деформується на мікрони, датчики реєструють зміну відстані та обчислюють силу за калібрувальною кривою. Система враховує температуру навколишнього середовища (калібрування кожні 24 години) та положення пальця (центр екрана більш чутливий).

Калібрування — критичний аспект 3D Touch. Кожен iPhone калібрується на заводі індивідуально. iOS також виконує динамічне калібрування: при першому натисканні після завантаження система запитує максимальну силу користувача та підлаштовує чутливість. Датчики мають точність ±10 грамів, діапазон — від 0 до 500+ грамів. Розробник може отримати значення сили через UITouch.force (нормалізоване від 0.0 до максимального) або UITouch.maximumPossibleForce.

swift
// Перевірка доступності 3D Touch та читання сили натискання
class ForceTouchViewController: UIViewController {

    override func touchesMoved(_ touches: Set<UITouch>,
                                with event: UIEvent?) {
        guard let touch = touches.first else { return }

        // Перевірка підтримки Force Touch на пристрої
        guard self.traitCollection.forceTouchCapability
                == UIForceTouchCapability.available else {
            // Пристрій не підтримує 3D Touch
            return
        }

        // Читання сили натискання (0.0 — max)
        let force = touch.force      // 0.0 ... maximumPossibleForce
        let maxForce = touch.maximumPossibleForce

        // Нормалізація в діапазон 0.0–1.0 для візуалізації
        let normalizedForce = force / maxForce

        // Візуальна реакція на силу натискання (масштаб елемента)
        forceView.transform = CGAffineTransform(scaleX: 1.0 + normalizedForce * 0.3,
                                                y: 1.0 + normalizedForce * 0.3)
    }
}

Обмеження: 3D Touch працює тільки з активним дотиком (UITouch.phase == .began або .moved). Після відпускання значення сили обнуляється. Максимальне значення сили варіюється між пристроями: iPhone 6S — 6.6666, iPhone 7/X — до 20.0 (через інше калібрування). Не використовуйте силу для критичних дій — користувач може не знати, з якою силою натискати. Завжди надавайте альтернативу через Haptic Touch (Long Press).

Peek and Pop: UX-патерн силового натискання

Peek and Pop — оригінальний UX-патерн Apple, представлений з 3D Touch в iPhone 6S. Peek — легке натискання (сила ~0.5–1.0), яке показує попередній перегляд вмісту (email, посилання, фото) у вигляді картки-прев'ю. Pop — більш глибоке натискання (сила ~2.0+), яке відкриває контент на повний екран. Peek підтримував дії знизу (поділитися, копіювати, відповісти), доступні свайпом вгору на картці попереднього перегляду.

Реалізація Peek and Pop в UIKit включала три компоненти: UIViewControllerPreviewingDelegate (протокол з методами previewingContext(_:viewControllerForLocation:) та previewingContext(_:commit:)), UIPreviewAction (дії знизу) та реєстрація через registerForPreviewing(with:sourceView:). Розробник вказував, який ViewController показувати при Peek, та як відкривати його при Pop. Система автоматично додавала анімацію паралаксу та розмиття фону.

ЖестСила (норм.)ДіяВізуальний ефект
Дотик (Touch)0.0–0.3Звичайна взаємодіяПідсвічування елемента
Легке натискання (Peek)0.5–1.0Попередній переглядКартка з розмиттям фону
Глибоке натискання (Pop)2.0+Відкриття на повний екранАнімація розкриття картки
Свайп вгоруДії (поділитися, копіювати)Група UIPreviewAction

Перехід до UIContextMenuInteraction (iOS 13): Apple замінила Peek and Pop на контекстні меню через UIContextMenuInteraction. Новий API простіший: не вимагає UIViewControllerPreviewingDelegate, підтримує ієрархічні меню (підменю), іконки SF Symbols та працює однаково з 3D Touch і Haptic Touch. Міграція: registerForPreviewing застарілий з iOS 13. Замініть на UIContextMenuConfiguration, який автоматично адаптується під можливості пристрою.

Контекстні меню: UIContextMenuInteraction

UIContextMenuInteraction — сучасний API iOS для контекстних меню, доступний з iOS 13. Додається до будь-якого UIView через addInteraction(_:). Делегат UIContextMenuInteractionDelegate надає конфігурацію меню: UIContextMenuConfiguration з ідентифікатором, previewProvider (опціонально, для попереднього перегляду) та actionProvider (масив UIAction або UIMenu). Контекстне меню активується 3D Touch (якщо доступний) або Haptic Touch (Long Press на інших пристроях).

swift
// UIContextMenuInteraction з ієрархічним меню
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: "Поділитися",
                              image: UIImage(systemName: "square.and.arrow.up"),
                              handler: { _ in self.shareContent() })

            let edit = UIAction(title: "Редагувати",
                            image: UIImage(systemName: "pencil"),
                            handler: { _ in self.editContent() })

            let delete = UIAction(title: "Видалити",
                            image: UIImage(systemName: "trash"),
                            attributes: .destructive,
                            handler: { _ in self.deleteContent() })

            return UIMenu(title: "Дії", children: [share, edit, delete])
        }
    }
}

UIContextMenuConfiguration підтримує previewProvider — контролер, що відображається як попередній перегляд. Якщо previewProvider дорівнює nil, контекстне меню показується без попереднього перегляду. Для налаштування розміру та зовнішнього вигляду попереднього перегляду використовується UIContextMenuContentPreviewProvider. Контекстні меню автоматично отримують тактильний відгук (Haptic Touch Engine) та анімацію появи (масштаб + згасання).

Haptic Touch vs 3D Touch: порівняння

Haptic Touch та 3D Touch — різні технології, які ведуть до одного результату. 3D Touch — апаратна (датчики тиску в дисплеї), Haptic Touch — програмна (Long Press + Taptic Engine для тактильної імітації). 3D Touch вимагає виробничих витрат (додатковий шар датчиків), збільшує товщину екрана та складність ремонту. Haptic Touch дешевший, простіший у виробництві та доступний на всіх сучасних пристроях (iPhone SE 2020, iPhone 11–16, iPad, iPod touch).

Параметр3D TouchHaptic Touch
ПринципВимірювання тиску (грами)Вимірювання часу (мілісекунди)
ДоступністьiPhone 6S–XS (обмежений)iPhone XR+, iPad, iPod touch
ШвидкістьМиттєво (~100 мс)Із затримкою (~500 мс)
Рівні натискання2 (peek + pop)1 (контекстне меню)
Тактильний відгукTaptic Engine (імітація кліка)Taptic Engine (імітація кліка)
App StoreQuick Actions на іконціQuick Actions на іконці
КалібруванняАвто-калібрування під силу користувачаНе потрібно
РемонтопридатністьСкладна (датчики в дисплеї)Стандартна

Вплив на UX: швидкість 3D Touch вища — користувач отримує контекстне меню відразу при сильному натисканні. Haptic Touch вимагає паузи 500 мс, що відчувається повільніше. Однак Apple компенсує це тактильним відгуком та візуальною анімацією. Користувачі, які перейшли з 3D Touch на Haptic Touch, часто відзначають різницю в швидкості. Для розробників міграція прозора: UIContextMenuInteraction працює однаково на обох технологіях.

Де застосовується силове натискання

Quick Actions — контекстне меню на іконці додатку на домашньому екрані. Сильне натискання (3D Touch) або Long Press (Haptic Touch) на іконці показує до 4 швидких дій: "Новий лист" (Messages), "Зробити фото" (Camera), "Пошук" (Safari). Реалізується через Info.plist ключ UIApplicationShortcutItems або через делегат UIApplicationShortcutItem. Quick Actions доступні на всіх пристроях з iOS 13+ (Haptic Touch) або 3D Touch.

Клавіатура-трекпад — силове натискання на клавіатуру iOS перемикає її в режим трекпада: клавіші стають неактивними, і рух пальця переміщує курсор. 3D Touch активував трекпад сильним натисканням у будь-якому місці клавіатури. Haptic Touch активує трекпад довгим натисканням на пробіл. Режим трекпада став одним із найпопулярніших застосувань 3D Touch — користувачі цінують точне позиціонування курсора при редагуванні тексту.

Попередній перегляд посилань та фото — силове натискання на посилання в Safari показує попередній перегляд сторінки (peek) без переходу. Аналогічно: натискання на фото в Messages відкриває збільшену версію. Свайп вгору в режимі peek показує дії: "Відкрити", "Додати до списку читання", "Копіювати". Всі ці сценарії працюють через UIContextMenuInteraction в сучасних версіях iOS.

Малювання та креативні додатки — в Procreate, Photoshop та інших додатках для малювання сила натискання 3D Touch керує товщиною пензля, непрозорістю або насиченістю кольору. Додатки читають UITouch.force (0.0–1.0) та перетворюють на параметри інструменту. Однак для малювання Apple Pencil на iPad забезпечує більш точне керування тиском (з підтримкою нахилу та азимута), тому 3D Touch в креативних додатках на iPhone менш затребуваний.

Часті запитання

В чому різниця між 3D Touch та Haptic Touch?

3D Touch — апаратна технологія, яка вимірює силу натискання через ємнісні датчики в дисплеї (iPhone 6S–XS). Haptic Touch — програмна імітація, яка використовує Long Press (утримання) та тактильний відгук Taptic Engine. 3D Touch швидший (100 мс проти 500 мс) та підтримує два рівні сили (peek + pop). Haptic Touch доступний на всіх пристроях з iOS 13+, включаючи iPhone XR, всі моделі iPhone 11–16, iPad та iPod touch.

Як перевірити, чи підтримує пристрій 3D Touch?

У коді використовуйте traitCollection.forceTouchCapability. Значення .available — 3D Touch підтримується, .unavailable — ні, .unknown — ще не визначено (зачекайте traitCollectionDidChange). На пристроях з Haptic Touch forceTouchCapability повертає .unavailable, оскільки Haptic Touch не використовує апаратні датчики сили. Для користувачів перевірка: Налаштування → Основні → Універсальний доступ → 3D Touch (тільки на старих iPhone).

Чому Apple відмовилася від 3D Touch?

Apple замінила 3D Touch на Haptic Touch з кількох причин: висока вартість виробництва екранів з датчиками тиску, складність ремонту (датчики інтегровані в дисплей), обмежена обізнаність користувачів (багато хто не знав про функцію) та перехід на OLED-екрани з Face ID, які складніше калібрувати для 3D Touch. Haptic Touch дешевший, простіший та доступний на більшій кількості пристроїв.

Які iPhone підтримують 3D Touch?

3D Touch підтримують: iPhone 6S, 6S Plus, 7, 7 Plus, 8, 8 Plus, X, XS, XS Max. iPhone XR не має 3D Touch (перший з Haptic Touch). Всі моделі iPhone 11, 12, 13, 14, 15, 16 та SE (2-го та 3-го покоління) використовують Haptic Touch. iPad ніколи не мав 3D Touch. На пристроях з 3D Touch також доступні налаштування чутливості (Налаштування → Основні → Універсальний доступ → 3D Touch).

Чи можна емулювати 3D Touch на пристроях без нього?

Так, iOS автоматично емулює 3D Touch через Haptic Touch на пристроях без апаратної підтримки. API UIContextMenuInteraction працює однаково на всіх пристроях — система сама вибирає тригер (3D Touch або Long Press). Для вашого коду це прозоро: контекстне меню з'являється на всіх пристроях з iOS 13+. Не потрібно писати окрему логіку для 3D Touch та Haptic Touch — використовуйте UIContextMenuConfiguration.

Підсумки

  • 3D Touch — апаратна технологія вимірювання сили натискання через датчики в дисплеї (iPhone 6S–XS)
  • Haptic Touch — програмна заміна, яка використовує Long Press з тактильним відгуком (iOS 13+)
  • Force Touch — технологія ємнісних датчиків для вимірювання тиску з точністю ~10 г
  • Peek and Pop — оригінальний UX-патерн з двома рівнями натискання (попередній перегляд та відкриття)
  • UIContextMenuInteraction — сучасний API iOS для контекстних меню, єдиний для обох технологій
  • Quick Actions — контекстне меню на іконці додатку для швидких дій
  • UIForceTouchCapability — перевірка доступності 3D Touch через traitCollection

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також