3D Touch — iPhone displeyiga bosim kuchini taniydigan Apple apparat texnologiyasi va uning dasturiy o'rnini bosuvchi Haptic Touch, teginish davomiyligi asosida ishlaydi. 3D Touch ekran matritsasi ostiga o'rnatilgan kalibrlangan bosim sensorlaridan (Force Touch) foydalanadi va yengil bosimni (peek) chuqur bosimdan (pop) farqlash imkonini beradi. iOS 13 dan boshlab Apple 3D Touch-ni Haptic Touch bilan almashtirdi — bu Long Press orqali kuchli bosimni taqlid qiluvchi va taktil aloqa bilan ta'minlovchi texnologiya UIContextMenuInteraction.
Asosiy ma'lumotlar
3D Touch — iPhone 6S (2015) da debyut qilgan apparat kirish texnologiyasi. Displey yuzasi ostida shisha va orqa yoritish o'rtasidagi masofani o'lchaydigan sig'im sensorlari joylashgan. Barmoq bilan bosilganda shisha mikrongacha egiladi, sensorlar deformatsiya kattaligini qayd etadi va uni kuch qiymatiga (gramm) aylantiradi. iOS uch darajani farqlaydi: yengil teginish (touch), o'rtacha bosim (peek, ~200 g) va chuqur bosim (pop, ~400 g).
Haptic Touch — iOS 13 (2019) da taqdim etilgan 3D Touch-ning dasturiy o'rnini bosuvchi. Bosimni o'lchash o'rniga Haptic Touch bir xil harakatlarni faollashtirish uchun Long Press (barmoqni ~500 ms ushlab turish) dan foydalanadi. Taktil aloqa (haptic feedback) hech qanday jismoniy bosim bo'lmasa ham, "chertish" hissini simulyatsiya qiladi. Apple 3D Touch-dan Haptic Touch-ga o'tdi, chunki 3D Touch ekranlarini ishlab chiqarish murakkab va qimmat edi, ayniqsa Face ID bilan OLED panellarga o'tishda.
Tarixiy ma'lumot: 3D Touch iPhone 6S da paydo bo'ldi va iPhone XS (2018) gacha saqlandi. iPhone XR (2018) 3D Touch o'rniga Haptic Touch bilan birinchi qurilma bo'ldi. iPhone 11 (2019) va iOS 13 dan boshlab barcha yangi iPhone-lar Haptic Touch dan foydalanadi. iPad hech qachon 3D Touch olmagan — faqat iPadOS 13 dan Haptic Touch. Apple Watch displeyda Force Touch texnologiyasidan foydalanadi (iPhone 3D Touch-dan farq qiladi), watchOS 7 va Series 6 dan boshlab olib tashlandi.
Force Touch — Apple tomonidan iPhone 6S–XS (3D Touch), MacBook trekpadlarida (2015+) va Apple Watch (Series 1–5) da ishlatiladigan bosim kuchini o'lchash texnologiyasi. Asosida ekran perimetri bo'ylab joylashgan sig'im sensorlari yotadi. Bosilganda shisha mikronlarga deformatsiyalanadi, sensorlar masofa o'zgarishini qayd etadi va kalibrlash egri chizig'iga ko'ra kuchni hisoblaydi. Tizim atrof-muhit haroratini (har 24 soatda kalibrlash) va barmoq joylashuvini (ekran markazi sezgirroq) hisobga oladi.
Kalibrlash — 3D Touch-ning muhim jihati. Har bir iPhone zavodda alohida kalibrlanadi. iOS shuningdek dinamik kalibrlashni amalga oshiradi: yuklashdan keyin birinchi bosishda tizim foydalanuvchining maksimal kuchini so'raydi va sezgirlikni sozlaydi. Sensorlarning aniqligi ±10 gramm, diapazon — 0 dan 500+ grammgacha. Dasturchi UITouch.force (0.0 dan maksimalgacha normallashtirilgan) yoki UITouch.maximumPossibleForce orqali kuch qiymatini olishi mumkin.
// 3D Touch mavjudligini tekshirish va bosim kuchini o'qish
class ForceTouchViewController: UIViewController {
override func touchesMoved(_ touches: Set<UITouch>,
with event: UIEvent?) {
guard let touch = touches.first else { return }
// Qurilmada Force Touch qo'llab-quvvatlanishini tekshirish
guard self.traitCollection.forceTouchCapability
== UIForceTouchCapability.available else {
// Qurilma 3D Touch-ni qo'llab-quvvatlamaydi
return
}
// Bosim kuchini o'qish (0.0 — maks)
let force = touch.force // 0.0 ... maximumPossibleForce
let maxForce = touch.maximumPossibleForce
// Vizualizatsiya uchun 0.0–1.0 diapazoniga normallashtirish
let normalizedForce = force / maxForce
// Bosim kuchiga vizual reaksiya (elementning masshtabi)
forceView.transform = CGAffineTransform(scaleX: 1.0 + normalizedForce * 0.3,
y: 1.0 + normalizedForce * 0.3)
}
}Cheklovlar: 3D Touch faqat faol teginish bilan ishlaydi (UITouch.phase == .began yoki .moved). Qo'yib yuborgandan so'ng kuch qiymati nolga tushadi. Maksimal kuch qiymati qurilmalar orasida farq qiladi: iPhone 6S — 6.6666, iPhone 7/X — 20.0 gacha (boshqa kalibrlash tufayli). Muhim harakatlar uchun kuchdan foydalanmang — foydalanuvchi qanchalik kuchli bosishni bilmasligi mumkin. Har doim Haptic Touch (Long Press) orqali muqobilni taqdim eting.
Peek and Pop — iPhone 6S da 3D Touch bilan taqdim etilgan asl Apple UX namunasi. Peek — tarkibning oldindan ko'rishini (elektron pochta, havola, rasm) oldindan ko'rish kartasi shaklida ko'rsatadigan yengil bosim (force ~0.5–1.0). Pop — tarkibni to'liq ekranda ochadigan chuqurroq bosim (force ~2.0+). Peek oldindan ko'rish kartasida yuqoriga surish orqali olinadigan pastki harakatlarni (share, copy, reply) qo'llab-quvvatlagan.
Peek and Pop-ning amalga oshirilishi UIKit da uch komponentni o'z ichiga olgan: UIViewControllerPreviewingDelegate (previewingContext(_:viewControllerForLocation:) va previewingContext(_:commit:) metodlari bilan protokol), UIPreviewAction (pastki harakatlar) va registerForPreviewing(with:sourceView:) orqali ro'yxatdan o'tkazish. Dasturchi Peek vaqtida qaysi ViewController ko'rsatilishini va Pop vaqtida uni qanday ochishni belgilagan. Tizim avtomatik ravishda parallaks animatsiyasi va fonni xiralashtirishni qo'shgan.
| Harakat | Kuch (norm.) | Amal | Vizual effekt |
|---|---|---|---|
| Teginish (Touch) | 0.0–0.3 | Oddiy o'zaro ta'sir | Elementni ajratib ko'rsatish |
| Yengil bosim (Peek) | 0.5–1.0 | Tarkibni oldindan ko'rish | Fon xiralashishi bilan karta |
| Chuqur bosim (Pop) | 2.0+ | To'liq ekranda ochish | Kartaning ochilish animatsiyasi |
| Yuqoriga surish | — | Harakatlar (share, copy) | UIPreviewAction Group |
UIContextMenuInteraction-ga o'tish (iOS 13): Apple Peek and Pop-ni UIContextMenuInteraction orqali kontekst menyulari bilan almashtirdi. Yangi API soddaroq: UIViewControllerPreviewingDelegate talab qilmaydi, ierarxik menyularni (submenus), SF Symbols ikonkalarini qo'llab-quvvatlaydi va 3D Touch hamda Haptic Touch bilan bir xil ishlaydi. Migratsiya: registerForPreviewing iOS 13 dan boshlab eskirgan. Uni UIContextMenuConfiguration bilan almashtiring, u avtomatik ravishda qurilmaning imkoniyatlariga moslashadi.
UIContextMenuInteraction — iOS 13 dan boshlab mavjud bo'lgan kontekst menyulari uchun zamonaviy iOS API-si. Istalgan UIView-ga addInteraction(_:) orqali qo'shiladi. UIContextMenuInteractionDelegate delegati menyu konfiguratsiyasini ta'minlaydi: identifikatorli UIContextMenuConfiguration, previewProvider (ixtiyoriy, oldindan ko'rish uchun) va actionProvider (UIAction yoki UIMenu massivi). Kontekst menyusi 3D Touch (mavjud bo'lganda) yoki Haptic Touch (qolgan qurilmalarda Long Press) orqali faollashtiriladi.
// Ierarxik menyu bilan 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: "Ulashish",
image: UIImage(systemName: "square.and.arrow.up"),
handler: { _ in self.shareContent() })
let edit = UIAction(title: "Tahrirlash",
image: UIImage(systemName: "pencil"),
handler: { _ in self.editContent() })
let delete = UIAction(title: "O'chirish",
image: UIImage(systemName: "trash"),
attributes: .destructive,
handler: { _ in self.deleteContent() })
return UIMenu(title: "Harakatlar", children: [share, edit, delete])
}
}
}UIContextMenuConfiguration previewProvider-ni qo'llab-quvvatlaydi — oldindan ko'rish sifatida ko'rsatiladigan kontroller. previewProvider nil bo'lganda, kontekst menyusi oldindan ko'rishsiz ko'rsatiladi. Oldindan ko'rishning o'lchami va ko'rinishini sozlash uchun UIContextMenuContentPreviewProvider ishlatiladi. Kontekst menyulari avtomatik ravishda taktil aloqa (Haptic Touch Engine) va paydo bo'lish animatsiyasini (scale + fade) oladi.
Haptic Touch va 3D Touch — bir xil natijaga olib keladigan turli texnologiyalar. 3D Touch apparatdir (ekrandagi bosim sensorlari), Haptic Touch dasturiydir (Long Press + taktil simulyatsiya uchun Taptic Engine). 3D Touch ishlab chiqarish xarajatlarini talab qiladi (qo'shimcha sensor qatlami), ekran qalinligini va ta'mirlash murakkabligini oshiradi. Haptic Touch arzonroq, ishlab chiqarishda soddaroq va barcha zamonaviy qurilmalarda mavjud (iPhone SE 2020, iPhone 11–16, iPad, iPod touch).
| Parametr | 3D Touch | Haptic Touch |
|---|---|---|
| Prinsip | Bosimni o'lchash (gramm) | Vaqtni o'lchash (millisekund) |
| Mavjudlik | iPhone 6S–XS (cheklangan) | iPhone XR+, iPad, iPod touch |
| Tezlik | Darhol (~100 ms) | Kechikish bilan (~500 ms) |
| Bosim darajalari | 2 (peek + pop) | 1 (kontekst menyusi) |
| Taktil aloqa | Taptic Engine (chertish simulyatsiyasi) | Taptic Engine (chertish simulyatsiyasi) |
| App Store | Belgida Quick Actions | Belgida Quick Actions |
| Kalibrlash | Foydalanuvchi kuchiga avtomatik moslashish | Talab qilinmaydi |
| Ta'mirlash mumkinligi | Murakkab (sensorlar ekranda) | Standart |
UX-ga ta'siri: 3D Touch tezligi yuqoriroq — foydalanuvchi kuchli bosganda darhol kontekst menyusini oladi. Haptic Touch 500 ms pauza talab qiladi, bu sekinroq his qilinadi. Biroq Apple buni taktil aloqa va vizual animatsiya bilan kompensatsiya qiladi. 3D Touch dan Haptic Touch ga o'tgan foydalanuvchilar tez-tez tezlik farqini qayd etadilar. Dasturchilar uchun migratsiya shaffof: UIContextMenuInteraction ikkala texnologiyada bir xil ishlaydi.
Quick Actions — bosh ekranda ilova belgisidagi kontekst menyusi. Belgida kuchli bosim (3D Touch) yoki Long Press (Haptic Touch) 4 tagacha tezkor harakatni ko'rsatadi: "Yangi xabar" (Messages), "Suratga olish" (Camera), "Qidirish" (Safari). Info.plist kaliti UIApplicationShortcutItems yoki UIApplicationShortcutItem delegati orqali amalga oshiriladi. Quick Actions iOS 13+ (Haptic Touch) yoki 3D Touch bo'lgan barcha qurilmalarda mavjud.
Klaviatura-trekpad — iOS klaviaturasiga kuchli bosim uni trekpad rejimiga o'tkazadi: tugmalar faol bo'lmaydi va barmoq harakati kursorni siljitadi. 3D Touch klaviaturaning istalgan joyida kuchli bosim bilan trekpadni faollashtirgan. Haptic Touch trekpadni bo'sh joy tugmasida (spacebar) uzoq bosish bilan faollashtiradi. Trekpad rejimi 3D Touch-ning eng mashhur qo'llanilishidan biriga aylandi — foydalanuvchilar matn tahrirlashda kursorni aniq joylashtirishni qadrlashadi.
Havolalar va rasmlarni oldindan ko'rish — Safari-da havolaga kuchli bosim o'tishsiz sahifaning oldindan ko'rishini (peek) ko'rsatadi. Xuddi shunday: Messages-da rasmga bosim kattalashtirilgan versiyani ochadi. Peek rejimida yuqoriga surish harakatlarni ko'rsatadi: "Ochish", "O'qish ro'yxatiga qo'shish", "Nusxalash". Bu stsenariylarning barchasi zamonaviy iOS versiyalarida UIContextMenuInteraction orqali ishlaydi.
Chizish va ijodiy ilovalar — Procreate, Photoshop va boshqa chizish ilovalarida 3D Touch bosim kuchi cho'tka qalinligini, shaffoflikni yoki rang to'yinganligini boshqaradi. Ilovalar UITouch.force (0.0–1.0) ni o'qiydi va asbob parametrlariga aylantiradi. Biroq chizish uchun iPad-da Apple Pencil aniqroq bosim nazoratini ta'minlaydi (egilish va azimut qo'llab-quvvatlashi bilan), shuning uchun iPhone-da ijodiy ilovalarda 3D Touch kamroq talab qilinadi.
Tez-tez beriladigan savollar
3D Touch — ekrandagi sig'im sensorlari orqali bosim kuchini o'lchaydigan apparat texnologiyasi (iPhone 6S–XS). Haptic Touch — Long Press (ushlab turish) va Taptic Engine taktil aloqasidan foydalanadigan dasturiy taqlid. 3D Touch tezroq (100 ms vs 500 ms) va ikki kuch darajasini qo'llab-quvvatlaydi (peek + pop). Haptic Touch iOS 13+ bo'lgan barcha qurilmalarda, jumladan iPhone XR, barcha iPhone 11–16 modellari, iPad va iPod touch da mavjud.
Koddagi traitCollection.forceTouchCapability dan foydalaning. .available qiymati — 3D Touch qo'llab-quvvatlanadi, .unavailable — yo'q, .unknown — hali aniqlanmagan (traitCollectionDidChange ni kuting). Haptic Touch bo'lgan qurilmalarda forceTouchCapability .unavailable qaytaradi, chunki Haptic Touch apparat kuch sensorlaridan foydalanmaydi. Foydalanuvchilar uchun tekshirish: Sozlamalar → Umumiy → Universal kirish → 3D Touch (faqat eski iPhone'larda).
Apple 3D Touch-ni Haptic Touch bilan bir necha sababga ko'ra almashtirdi: bosim sensorli ekranlarning yuqori ishlab chiqarish narxi, ta'mirlashning murakkabligi (sensorlar ekranga integratsiyalangan), foydalanuvchilarning cheklangan xabardorligi (ko'pchilik funksiyani bilmagan) va 3D Touch uchun kalibrlash qiyin bo'lgan Face ID bilan OLED ekranlarga o'tish. Haptic Touch arzonroq, soddaroq va ko'proq qurilmalarda mavjud.
3D Touch qo'llab-quvvatlaydiganlar: iPhone 6S, 6S Plus, 7, 7 Plus, 8, 8 Plus, X, XS, XS Max. iPhone XR 3D Touch ga ega emas (Haptic Touch bilan birinchi). Barcha iPhone 11, 12, 13, 14, 15, 16 va SE (2 va 3-avlod) modellari Haptic Touch dan foydalanadi. iPad hech qachon 3D Touch ga ega bo'lmagan. 3D Touch bo'lgan qurilmalarda sezgirlik sozlamalari ham mavjud (Sozlamalar → Umumiy → Universal kirish → 3D Touch).
Ha, iOS 3D Touch-ni avtomatik ravishda Haptic Touch orqali apparat qo'llab-quvvatlamaydigan qurilmalarda emulyatsiya qiladi. UIContextMenuInteraction API-si barcha qurilmalarda bir xil ishlaydi — tizim o'zi tetikni tanlaydi (3D Touch yoki Long Press). Sizning kodingiz uchun bu shaffof: kontekst menyusi iOS 13+ bo'lgan barcha qurilmalarda paydo bo'ladi. 3D Touch va Haptic Touch uchun alohida mantiq yozish shart emas — UIContextMenuConfiguration dan foydalaning.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.