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 — модерен iOS API за контекстни менюта, работещ с Haptic Touch
  • Force Touch — технология на Apple, измерваща налягане чрез капацитивни сензори в дисплея
  • UIForceTouchCapability — метод на iOS за проверка на наличието на 3D Touch на устройството

Какво е 3D Touch и Haptic Touch?

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

Haptic Touch — софтуерен заместител на 3D Touch, представен в iOS 13 (2019). Вместо да измерва налягане, Haptic Touch използва Long Press (задържане на пръста ~500 ms) за активиране на същите действия. Тактилната обратна връзка (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 също извършва динамично калибриране: при първия натиск след стартиране системата пита за максималната сила на потребителя и настройва чувствителността. Сензорите имат точност ±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 — макс)
        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), който показва преглед на съдържанието (имейл, връзка, снимка) под формата на карта за преглед. 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Обикновено взаимодействиеОткрояване на елемент
Лек натиск (Peek)0.5–1.0Преглед на съдържаниеКарта със замъгляване на фона
Дълбок натиск (Pop)2.0+Отваряне на цял екранАнимация на разгъване на карта
Плъзгане нагореДействия (share, copy)Група UIPreviewAction

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

Контекстни менюта: UIContextMenuInteraction

UIContextMenuInteraction — модерен iOS API за контекстни менюта, достъпен от 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) и анимация на появяване (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 ms)Със закъснение (~500 ms)
Нива на натиск2 (peek + pop)1 (контекстно меню)
Тактилна обратна връзкаTaptic Engine (симулация на клик)Taptic Engine (симулация на клик)
App StoreQuick Actions на иконаQuick Actions на икона
КалибриранеАвтоматично към силата на потребителяНе се изисква
РемонтопригодностСложна (сензори в дисплея)Стандартна

Влияние върху UX: скоростта на 3D Touch е по-висока — потребителят получава контекстно меню веднага при силен натиск. Haptic Touch изисква пауза от 500 ms, което се усеща като по-бавно. 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 ms vs 500 ms) и поддържа две нива на сила (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 g
  • Peek and Pop — оригинален UX модел с две нива на натиск (преглед и отваряне)
  • UIContextMenuInteraction — модерен iOS API за контекстни менюта, общ и за двете технологии
  • Quick Actions — контекстно меню на иконата на приложение за бързи действия
  • UIForceTouchCapability — проверка на наличието на 3D Touch чрез traitCollection

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също