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 мс) для активации тех же действий. Тактильный отклик (haptic feedback) имитирует ощущение "клика", хотя никакого физического нажатия не происходит. 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 также выполняет динамическую калибровку: при первом нажатии после загрузки система запрашивает максимальную силу (force) пользователя и подстраивает чувствительность. Датчики имеют точность ±10 граммов, диапазон — от 0 до 500+ граммов. Разработчик может получить значение force через 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). После отпускания значение force обнуляется. Максимальное значение force варьируется между устройствами: iPhone 6S — 6.6666, iPhone 7/X — до 20.0 (из-за другой калибровки). Не используйте force для критических действий — пользователь может не знать, с какой силой нажимать. Всегда предоставляйте альтернативу через Haptic Touch (Long Press).

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

Peek and Pop — оригинальный UX-паттерн Apple, представленный с 3D Touch в iPhone 6S. Peek — лёгкое нажатие (force ~0.5–1.0), которое показывает предварительный просмотр содержимого (email, ссылка, фото) в виде карточки-превью. Pop — более глубокое нажатие (force ~2.0+), которое открывает контент на полный экран. Peek поддерживал действия снизу (share, copy, reply), доступные свайпом вверх на карточке предпросмотра.

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

ЖестСила (норм.)ДействиеВизуальный эффект
Касание (Touch)0.0–0.3Обычное взаимодействиеHighlight элемента
Лёгкое нажатие (Peek)0.5–1.0Предпросмотр содержимогоКарточка с blur фона
Глубокое нажатие (Pop)2.0+Открытие на полный экранАнимация раскрытия карточки
Свайп вверхДействия (share, copy)UIPreviewAction Group

Переход к UIContextMenuInteraction (iOS 13): Apple заменила Peek and Pop на контекстные меню через UIContextMenuInteraction. Новый API проще: не требует UIViewControllerPreviewingDelegate, поддерживает иерархические меню (submenus), иконки SF Symbols, и работает одинаково с 3D Touch и Haptic Touch. Миграция: registerForPreviewing deprecated с 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, контекстное меню показывается без предпросмотра. Для настройки размера и внешнего вида preview используется UIContextMenuContentPreviewProvider. Контекстные меню автоматически получают тактильный отклик (Haptic Touch Engine) и анимацию появления (scale + fade).

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 активирует трекпад долгим нажатием на пробел (spacebar). Режим трекпада стал одним из самых популярных применений 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 мс vs 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 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

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