3D Touch là công nghệ phần cứng của Apple nhận biết lực nhấn trên màn hình iPhone, và sự thay thế bằng phần mềm Haptic Touch, hoạt động thông qua thời gian chạm. 3D Touch sử dụng các cảm biến áp suất đã hiệu chỉnh được lắp dưới ma trận màn hình (Force Touch) và cho phép phân biệt giữa nhấn nhẹ (peek) và nhấn sâu (pop). Bắt đầu từ iOS 13, Apple đã thay thế 3D Touch bằng Haptic Touch — công nghệ mô phỏng nhấn mạnh qua Long Press với phản hồi xúc giác UIContextMenuInteraction.
Những điểm chính
3D Touch là công nghệ đầu vào phần cứng ra mắt lần đầu trên iPhone 6S (2015). Bên dưới bề mặt màn hình, các cảm biến điện dung đo khoảng cách giữa kính và đèn nền. Khi bạn nhấn bằng ngón tay, kính bị cong ở mức vi mô, các cảm biến phát hiện lượng biến dạng và chuyển đổi thành giá trị lực (gam). iOS phân biệt ba cấp độ: chạm nhẹ (touch), nhấn vừa (peek, ~200 g) và nhấn sâu (pop, ~400 g).
Haptic Touch là sự thay thế bằng phần mềm cho 3D Touch, được giới thiệu trong iOS 13 (2019). Thay vì đo áp lực, Haptic Touch sử dụng Long Press (giữ ngón tay ~500 ms) để kích hoạt các hành động tương tự. Phản hồi xúc giác mô phỏng cảm giác "nhấp chuột", mặc dù không có áp lực vật lý nào xảy ra. Apple chuyển sang Haptic Touch do sự phức tạp và chi phí sản xuất màn hình 3D Touch cao, đặc biệt khi chuyển sang tấm nền OLED với Face ID.
Bối cảnh lịch sử: 3D Touch xuất hiện trên iPhone 6S và tồn tại đến iPhone XS (2018). iPhone XR (2018) trở thành thiết bị đầu tiên có Haptic Touch thay vì 3D Touch. Bắt đầu từ iPhone 11 (2019) và iOS 13, tất cả iPhone mới đều sử dụng Haptic Touch. iPad chưa bao giờ nhận được 3D Touch — chỉ có Haptic Touch với iPadOS 13. Apple Watch sử dụng công nghệ Force Touch trong màn hình (khác với 3D Touch trên iPhone), đã bị loại bỏ từ watchOS 7 và Series 6.
Force Touch là công nghệ đo lực được Apple sử dụng trong iPhone 6S–XS (3D Touch), bàn di chuột MacBook (2015+) và Apple Watch (Series 1–5). Nó dựa trên các cảm biến điện dung đặt xung quanh chu vi màn hình. Khi nhấn, kính biến dạng micromet, các cảm biến ghi lại sự thay đổi khoảng cách và tính toán lực bằng đường cong hiệu chỉnh. Hệ thống tính đến nhiệt độ môi trường (hiệu chỉnh mỗi 24 giờ) và vị trí ngón tay (tâm màn hình nhạy hơn).
Hiệu chỉnh là một khía cạnh quan trọng của 3D Touch. Mỗi iPhone được hiệu chỉnh riêng tại nhà máy. iOS cũng thực hiện hiệu chỉnh động: ở lần nhấn đầu tiên sau khi khởi động, hệ thống yêu cầu lực tối đa của người dùng và điều chỉnh độ nhạy. Cảm biến có độ chính xác ±10 gam, phạm vi từ 0 đến 500+ gam. Nhà phát triển có thể lấy giá trị lực qua UITouch.force (được chuẩn hóa từ 0.0 đến tối đa) hoặc UITouch.maximumPossibleForce.
// Kiểm tra khả dụng 3D Touch và đọc lực nhấn
class ForceTouchViewController: UIViewController {
override func touchesMoved(_ touches: Set<UITouch>,
with event: UIEvent?) {
guard let touch = touches.first else { return }
// Kiểm tra hỗ trợ Force Touch trên thiết bị
guard self.traitCollection.forceTouchCapability
== UIForceTouchCapability.available else {
// Thiết bị không hỗ trợ 3D Touch
return
}
// Đọc lực nhấn (0.0 — tối đa)
let force = touch.force // 0.0 ... maximumPossibleForce
let maxForce = touch.maximumPossibleForce
// Chuẩn hóa về phạm vi 0.0–1.0 để trực quan hóa
let normalizedForce = force / maxForce
// Phản ứng trực quan với lực nhấn (tỷ lệ phần tử)
forceView.transform = CGAffineTransform(scaleX: 1.0 + normalizedForce * 0.3,
y: 1.0 + normalizedForce * 0.3)
}
}Hạn chế: 3D Touch chỉ hoạt động với thao tác chạm đang hoạt động (UITouch.phase == .began hoặc .moved). Sau khi thả ra, giá trị lực được đặt lại về 0. Giá trị lực tối đa khác nhau giữa các thiết bị: iPhone 6S — 6.6666, iPhone 7/X — lên đến 20.0 (do hiệu chỉnh khác nhau). Không sử dụng lực cho các hành động quan trọng — người dùng có thể không biết nhấn mạnh đến mức nào. Luôn cung cấp giải pháp thay thế qua Haptic Touch (Long Press).
Peek and Pop là mẫu UX gốc của Apple được giới thiệu với 3D Touch trên iPhone 6S. Peek là nhấn nhẹ (lực ~0.5–1.0) hiển thị xem trước nội dung (email, liên kết, ảnh) trong thẻ xem trước. Pop là nhấn sâu hơn (lực ~2.0+) mở nội dung ở chế độ toàn màn hình. Peek hỗ trợ các hành động ở phía dưới (chia sẻ, sao chép, trả lời), có thể truy cập bằng cách vuốt lên trên thẻ xem trước.
Triển khai Peek and Pop trong UIKit bao gồm ba thành phần: UIViewControllerPreviewingDelegate (giao thức với các phương thức previewingContext(_:viewControllerForLocation:) và previewingContext(_:commit:)), UIPreviewAction (hành động ở phía dưới) và đăng ký qua registerForPreviewing(with:sourceView:). Nhà phát triển chỉ định ViewController nào hiển thị khi Peek và cách mở nó khi Pop. Hệ thống tự động thêm hiệu ứng chuyển động thị sai và làm mờ nền.
| Cử chỉ | Lực (chuẩn hóa) | Hành động | Hiệu ứng hình ảnh |
|---|---|---|---|
| Chạm (Touch) | 0.0–0.3 | Tương tác bình thường | Làm nổi bật phần tử |
| Nhấn nhẹ (Peek) | 0.5–1.0 | Xem trước nội dung | Thẻ với nền mờ |
| Nhấn sâu (Pop) | 2.0+ | Mở toàn màn hình | Hiệu ứng mở rộng thẻ |
| Vuốt lên | — | Hành động (chia sẻ, sao chép) | Nhóm UIPreviewAction |
Chuyển sang UIContextMenuInteraction (iOS 13): Apple đã thay thế Peek and Pop bằng menu ngữ cảnh qua UIContextMenuInteraction. API mới đơn giản hơn: không yêu cầu UIViewControllerPreviewingDelegate, hỗ trợ menu phân cấp (menu con), biểu tượng SF Symbols và hoạt động giống hệt nhau với cả 3D Touch và Haptic Touch. Di chuyển: registerForPreviewing không được dùng nữa từ iOS 13. Thay thế bằng UIContextMenuConfiguration, tự động thích ứng với khả năng của thiết bị.
UIContextMenuInteraction là API iOS hiện đại cho menu ngữ cảnh, có sẵn từ iOS 13. Nó được thêm vào bất kỳ UIView nào qua addInteraction(_:). Đại biểu UIContextMenuInteractionDelegate cung cấp cấu hình menu: UIContextMenuConfiguration với mã định danh, previewProvider (tùy chọn, để xem trước) và actionProvider (mảng UIAction hoặc UIMenu). Menu ngữ cảnh được kích hoạt bằng 3D Touch (nếu khả dụng) hoặc Haptic Touch (Long Press trên các thiết bị khác).
// UIContextMenuInteraction với menu phân cấp
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: "Chia sẻ",
image: UIImage(systemName: "square.and.arrow.up"),
handler: { _ in self.shareContent() })
let edit = UIAction(title: "Chỉnh sửa",
image: UIImage(systemName: "pencil"),
handler: { _ in self.editContent() })
let delete = UIAction(title: "Xóa",
image: UIImage(systemName: "trash"),
attributes: .destructive,
handler: { _ in self.deleteContent() })
return UIMenu(title: "Hành động", children: [share, edit, delete])
}
}
}UIContextMenuConfiguration hỗ trợ previewProvider — bộ điều khiển được hiển thị dưới dạng xem trước. Nếu previewProvider là nil, menu ngữ cảnh được hiển thị mà không có xem trước. UIContextMenuContentPreviewProvider được sử dụng để tùy chỉnh kích thước và giao diện của bản xem trước. Menu ngữ cảnh tự động nhận phản hồi xúc giác (Haptic Touch Engine) và hiệu ứng xuất hiện (thu phóng + làm mờ).
Haptic Touch và 3D Touch là các công nghệ khác nhau dẫn đến cùng một kết quả. 3D Touch là phần cứng (cảm biến áp suất trong màn hình), Haptic Touch là phần mềm (Long Press + Taptic Engine để mô phỏng xúc giác). 3D Touch yêu cầu chi phí sản xuất (lớp cảm biến bổ sung), làm tăng độ dày màn hình và độ phức tạp sửa chữa. Haptic Touch rẻ hơn, sản xuất đơn giản hơn và có sẵn trên tất cả các thiết bị hiện đại (iPhone SE 2020, iPhone 11–16, iPad, iPod touch).
| Tham số | 3D Touch | Haptic Touch |
|---|---|---|
| Nguyên lý | Đo áp lực (gam) | Đo thời gian (miligiây) |
| Khả dụng | iPhone 6S–XS (giới hạn) | iPhone XR+, iPad, iPod touch |
| Tốc độ | Tức thì (~100 ms) | Có độ trễ (~500 ms) |
| Cấp độ nhấn | 2 (peek + pop) | 1 (menu ngữ cảnh) |
| Phản hồi xúc giác | Taptic Engine (mô phỏng nhấp chuột) | Taptic Engine (mô phỏng nhấp chuột) |
| App Store | Thao tác nhanh trên biểu tượng | Thao tác nhanh trên biểu tượng |
| Hiệu chỉnh | Tự động hiệu chỉnh theo lực người dùng | Không yêu cầu |
| Khả năng sửa chữa | Phức tạp (cảm biến trong màn hình) | Tiêu chuẩn |
Tác động đến UX: tốc độ của 3D Touch cao hơn — người dùng nhận được menu ngữ cảnh ngay lập tức khi nhấn mạnh. Haptic Touch yêu cầu tạm dừng 500 ms, cảm giác chậm hơn. Tuy nhiên, Apple bù đắp bằng phản hồi xúc giác và hoạt ảnh trực quan. Người dùng chuyển từ 3D Touch sang Haptic Touch thường nhận thấy sự khác biệt về tốc độ. Đối với nhà phát triển, việc di chuyển là minh bạch: UIContextMenuInteraction hoạt động giống hệt nhau trên cả hai công nghệ.
Thao tác nhanh (Quick Actions) — menu ngữ cảnh trên biểu tượng ứng dụng trên màn hình chính. Nhấn mạnh (3D Touch) hoặc nhấn giữ (Haptic Touch) trên biểu tượng hiển thị tối đa 4 thao tác nhanh: "Tin nhắn mới" (Messages), "Chụp ảnh" (Camera), "Tìm kiếm" (Safari). Được triển khai qua khóa Info.plist UIApplicationShortcutItems hoặc qua đại biểu UIApplicationShortcutItem. Thao tác nhanh có sẵn trên tất cả các thiết bị có iOS 13+ (Haptic Touch) hoặc 3D Touch.
Bàn di chuột bàn phím — nhấn mạnh vào bàn phím iOS sẽ chuyển nó sang chế độ bàn di chuột: các phím trở nên không hoạt động và chuyển động của ngón tay di chuyển con trỏ. 3D Touch kích hoạt bàn di chuột bằng cách nhấn mạnh ở bất kỳ đâu trên bàn phím. Haptic Touch kích hoạt bàn di chuột bằng cách nhấn giữ phím cách. Chế độ bàn di chuột đã trở thành một trong những ứng dụng phổ biến nhất của 3D Touch — người dùng đánh giá cao khả năng định vị con trỏ chính xác khi chỉnh sửa văn bản.
Xem trước liên kết và ảnh — nhấn mạnh vào một liên kết trong Safari hiển thị xem trước trang (peek) mà không cần điều hướng. Tương tự: nhấn vào ảnh trong Messages sẽ mở phiên bản phóng to. Vuốt lên trong chế độ peek hiển thị các hành động: "Mở", "Thêm vào danh sách đọc", "Sao chép". Tất cả các tình huống này đều hoạt động qua UIContextMenuInteraction trong các phiên bản iOS hiện đại.
Ứng dụng vẽ và sáng tạo — trong Procreate, Photoshop và các ứng dụng vẽ khác, lực nhấn của 3D Touch kiểm soát độ dày cọ, độ mờ đục hoặc độ bão hòa màu. Các ứng dụng đọc UITouch.force (0.0–1.0) và chuyển đổi thành tham số công cụ. Tuy nhiên, để vẽ, Apple Pencil trên iPad cung cấp khả năng kiểm soát áp lực chính xác hơn (hỗ trợ độ nghiêng và góc phương vị), do đó 3D Touch trong các ứng dụng sáng tạo trên iPhone ít được yêu cầu hơn.
Câu hỏi thường gặp
3D Touch là công nghệ phần cứng đo lực nhấn qua cảm biến điện dung trong màn hình (iPhone 6S–XS). Haptic Touch là mô phỏng phần mềm sử dụng Long Press và phản hồi xúc giác từ Taptic Engine. 3D Touch nhanh hơn (100 ms so với 500 ms) và hỗ trợ hai cấp độ lực (peek + pop). Haptic Touch có sẵn trên tất cả các thiết bị có iOS 13+, bao gồm iPhone XR, tất cả các mẫu iPhone 11–16, iPad và iPod touch.
Trong mã, sử dụng traitCollection.forceTouchCapability. Giá trị .available có nghĩa là 3D Touch được hỗ trợ, .unavailable có nghĩa là không, .unknown có nghĩa là chưa được xác định (chờ traitCollectionDidChange). Trên các thiết bị có Haptic Touch, forceTouchCapability trả về .unavailable, vì Haptic Touch không sử dụng cảm biến lực phần cứng. Đối với người dùng: kiểm tra trong Cài đặt → Trợ năng → Cảm ứng → 3D Touch (chỉ trên iPhone cũ).
Apple đã thay thế 3D Touch bằng Haptic Touch vì nhiều lý do: chi phí sản xuất màn hình có cảm biến áp suất cao, độ phức tạp sửa chữa (cảm biến tích hợp trong màn hình), nhận thức hạn chế của người dùng (nhiều người không biết về tính năng này) và quá trình chuyển đổi sang màn hình OLED với Face ID, khó hiệu chỉnh cho 3D Touch hơn. Haptic Touch rẻ hơn, đơn giản hơn và có sẵn trên nhiều thiết bị hơn.
3D Touch được hỗ trợ bởi: iPhone 6S, 6S Plus, 7, 7 Plus, 8, 8 Plus, X, XS, XS Max. iPhone XR không có 3D Touch (thiết bị đầu tiên có Haptic Touch). Tất cả các mẫu iPhone 11, 12, 13, 14, 15, 16 và SE (thế hệ thứ 2 và thứ 3) đều sử dụng Haptic Touch. iPad chưa bao giờ có 3D Touch. Trên các thiết bị có 3D Touch, cài đặt độ nhạy cũng có sẵn (Cài đặt → Trợ năng → Cảm ứng → 3D Touch).
Có, iOS tự động mô phỏng 3D Touch qua Haptic Touch trên các thiết bị không có hỗ trợ phần cứng. API UIContextMenuInteraction hoạt động giống hệt nhau trên tất cả các thiết bị — hệ thống tự chọn trình kích hoạt (3D Touch hoặc Long Press). Điều này minh bạch cho mã của bạn: menu ngữ cảnh xuất hiện trên tất cả các thiết bị có iOS 13+. Bạn không cần viết logic riêng cho 3D Touch và Haptic Touch — hãy sử dụng UIContextMenuConfiguration.
Tóm tắt
Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.
Đọc thêm