3D Touch, iPhone ekranına uygulanan basınç kuvvetini tanıyan bir Apple donanım teknolojisidir ve yazılımsal alternatifi Haptic Touch, dokunma süresi boyunca çalışır. 3D Touch, ekran matrisinin altına yerleştirilmiş kalibre edilmiş basınç sensörlerini (Force Touch) kullanır ve hafif basınç (peek) ile derin basınç (pop) arasında ayrım yapmanızı sağlar. iOS 13'ten itibaren Apple, 3D Touch'ı Haptic Touch ile değiştirdi — dokunsal geri bildirimle Uzun Basma yoluyla kuvvetli basıncı simüle eden bir teknoloji UIContextMenuInteraction.
Önemli Noktalar
3D Touch, iPhone 6S'te (2015) tanıtılan bir donanım giriş teknolojisidir. Ekran yüzeyinin altında, kapasitif sensörler cam ile arka aydınlatma arasındaki mesafeyi ölçer. Parmağınızla bastığınızda, cam mikroskobik olarak bükülür, sensörler deformasyon miktarını algılar ve bunu bir kuvvet değerine (gram) dönüştürür. iOS üç seviyeyi ayırt eder: hafif dokunma (touch), orta basınç (peek, ~200 g) ve derin basınç (pop, ~400 g).
Haptic Touch, iOS 13'te (2019) tanıtılan 3D Touch'ın yazılımsal bir alternatifidir. Basıncı ölçmek yerine, Haptic Touch aynı eylemleri etkinleştirmek için Uzun Basma (parmağı ~500 ms tutma) kullanır. Dokunsal geri bildirim, fiziksel bir basınç olmamasına rağmen bir "tıklama" hissini simüle eder. Apple, özellikle Face ID ile OLED panellere geçişte, 3D Touch ekranlarının üretim karmaşıklığı ve yüksek maliyeti nedeniyle Haptic Touch'a geçti.
Tarihsel arka plan: 3D Touch, iPhone 6S'te ortaya çıktı ve iPhone XS'e (2018) kadar devam etti. iPhone XR (2018), 3D Touch yerine Haptic Touch'a sahip ilk cihaz oldu. iPhone 11 (2019) ve iOS 13'ten itibaren, tüm yeni iPhone'lar Haptic Touch kullanır. iPad hiçbir zaman 3D Touch almadı — yalnızca iPadOS 13 ile Haptic Touch aldı. Apple Watch, ekranda Force Touch teknolojisini kullanır (iPhone 3D Touch'tan farklıdır) ve watchOS 7 ve Series 6'dan itibaren kaldırılmıştır.
Force Touch, Apple tarafından iPhone 6S–XS (3D Touch), MacBook izleme dörtgenleri (2015+) ve Apple Watch'ta (Series 1–5) kullanılan bir kuvvet ölçüm teknolojisidir. Ekranın çevresine yerleştirilmiş kapasitif sensörlere dayanır. Basıldığında, cam mikronlarca deforme olur, sensörler mesafe değişikliğini kaydeder ve bir kalibrasyon eğrisi kullanarak kuvveti hesaplar. Sistem, ortam sıcaklığını (her 24 saatte bir kalibrasyon) ve parmak konumunu (ekranın merkezi daha hassastır) dikkate alır.
Kalibrasyon, 3D Touch'ın kritik bir yönüdür. Her iPhone fabrikada ayrı ayrı kalibre edilir. iOS ayrıca dinamik kalibrasyon gerçekleştirir: önyüklemeden sonraki ilk basınçta sistem, kullanıcının maksimum kuvvetini sorar ve hassasiyeti ayarlar. Sensörlerin doğruluğu ±10 gram, aralığı 0 ila 500+ gramdır. Geliştirici, UITouch.force (0.0'dan maksimuma normalleştirilmiş) veya UITouch.maximumPossibleForce aracılığıyla kuvvet değerini alabilir.
// 3D Touch kullanılabilirliğini kontrol etme ve basınç kuvvetini okuma
class ForceTouchViewController: UIViewController {
override func touchesMoved(_ touches: Set<UITouch>,
with event: UIEvent?) {
guard let touch = touches.first else { return }
// Cihazda Force Touch desteğini kontrol etme
guard self.traitCollection.forceTouchCapability
== UIForceTouchCapability.available else {
// Cihaz 3D Touch'ı desteklemiyor
return
}
// Basınç kuvvetini okuma (0.0 — maks)
let force = touch.force // 0.0 ... maximumPossibleForce
let maxForce = touch.maximumPossibleForce
// Görselleştirme için 0.0–1.0 aralığına normalleştirme
let normalizedForce = force / maxForce
// Basınç kuvvetine görsel tepki (öğe ölçeği)
forceView.transform = CGAffineTransform(scaleX: 1.0 + normalizedForce * 0.3,
y: 1.0 + normalizedForce * 0.3)
}
}Sınırlamalar: 3D Touch yalnızca aktif dokunma ile çalışır (UITouch.phase == .began veya .moved). Bıraktıktan sonra kuvvet değeri sıfırlanır. Maksimum kuvvet değeri cihazlar arasında değişir: iPhone 6S — 6.6666, iPhone 7/X — 20.0'a kadar (farklı kalibrasyon nedeniyle). Kritik eylemler için kuvvet kullanmayın — kullanıcı ne kadar sert basması gerektiğini bilmeyebilir. Her zaman Haptic Touch (Uzun Basma) aracılığıyla bir alternatif sağlayın.
Peek and Pop, iPhone 6S'te 3D Touch ile tanıtılan orijinal Apple UX desenidir. Peek, bir önizleme kartında içeriğin (e-posta, bağlantı, fotoğraf) önizlemesini gösteren hafif bir basınçtır (kuvvet ~0.5–1.0). Pop, içeriği tam ekranda açan daha derin bir basınçtır (kuvvet ~2.0+). Peek, önizleme kartında yukarı kaydırarak erişilebilen alt kısımda eylemleri (paylaş, kopyala, yanıtla) destekliyordu.
UIKit'te Peek and Pop uygulaması üç bileşen içeriyordu: UIViewControllerPreviewingDelegate (previewingContext(_:viewControllerForLocation:) ve previewingContext(_:commit:) yöntemlerine sahip bir protokol), UIPreviewAction (alt kısımdaki eylemler) ve registerForPreviewing(with:sourceView:) aracılığıyla kayıt. Geliştirici, Peek'te hangi ViewController'ın gösterileceğini ve Pop'ta nasıl açılacağını belirtti. Sistem otomatik olarak paralaks animasyonu ve arka plan bulanıklığı ekledi.
| Hareket | Kuvvet (norm.) | Eylem | Görsel Efekt |
|---|---|---|---|
| Dokunma (Touch) | 0.0–0.3 | Normal etkileşim | Öğe vurgulama |
| Hafif basınç (Peek) | 0.5–1.0 | İçerik önizlemesi | Arka plan bulanık kart |
| Derin basınç (Pop) | 2.0+ | Tam ekran açma | Kart genişletme animasyonu |
| Yukarı kaydırma | — | Eylemler (paylaş, kopyala) | UIPreviewAction Grubu |
UIContextMenuInteraction'a Geçiş (iOS 13): Apple, Peek and Pop'ı UIContextMenuInteraction aracılığıyla bağlam menüleriyle değiştirdi. Yeni API daha basittir: UIViewControllerPreviewingDelegate gerektirmez, hiyerarşik menüleri (alt menüler), SF Symbols simgelerini destekler ve hem 3D Touch hem de Haptic Touch ile aynı şekilde çalışır. Geçiş: registerForPreviewing iOS 13'ten itibaren kullanımdan kaldırılmıştır. Cihazın yeteneklerine otomatik olarak uyum sağlayan UIContextMenuConfiguration ile değiştirin.
UIContextMenuInteraction, iOS 13'ten beri kullanılabilen, bağlam menüleri için modern bir iOS API'sidir. addInteraction(_:) aracılığıyla herhangi bir UIView'e eklenir. UIContextMenuInteractionDelegate, menü yapılandırmasını sağlar: bir tanımlayıcıya sahip UIContextMenuConfiguration, previewProvider (isteğe bağlı, önizleme için) ve actionProvider (UIAction veya UIMenu dizisi). Bağlam menüsü, 3D Touch (varsa) veya Haptic Touch (diğer cihazlarda Uzun Basma) tarafından etkinleştirilir.
// Hiyerarşik menü ile 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: "Paylaş",
image: UIImage(systemName: "square.and.arrow.up"),
handler: { _ in self.shareContent() })
let edit = UIAction(title: "Düzenle",
image: UIImage(systemName: "pencil"),
handler: { _ in self.editContent() })
let delete = UIAction(title: "Sil",
image: UIImage(systemName: "trash"),
attributes: .destructive,
handler: { _ in self.deleteContent() })
return UIMenu(title: "Eylemler", children: [share, edit, delete])
}
}
}UIContextMenuConfiguration, previewProvider'ı destekler — önizleme olarak görüntülenen bir denetleyici. previewProvider nil ise, bağlam menüsü önizleme olmadan gösterilir. Önizlemenin boyutunu ve görünümünü özelleştirmek için UIContextMenuContentPreviewProvider kullanılır. Bağlam menüleri otomatik olarak dokunsal geri bildirim (Haptic Touch Engine) ve görünme animasyonu (ölçek + solma) alır.
Haptic Touch ve 3D Touch, aynı sonuca giden farklı teknolojilerdir. 3D Touch donanımdır (ekranda basınç sensörleri), Haptic Touch yazılımdır (dokunsal simülasyon için Uzun Basma + Taptic Engine). 3D Touch, üretim maliyetleri (ek sensör katmanı) gerektirir, ekran kalınlığını ve onarım karmaşıklığını artırır. Haptic Touch daha ucuzdur, üretimi daha basittir ve tüm modern cihazlarda (iPhone SE 2020, iPhone 11–16, iPad, iPod touch) kullanılabilir.
| Parametre | 3D Touch | Haptic Touch |
|---|---|---|
| İlke | Basınç ölçümü (gram) | Süre ölçümü (milisaniye) |
| Kullanılabilirlik | iPhone 6S–XS (sınırlı) | iPhone XR+, iPad, iPod touch |
| Hız | Anlık (~100 ms) | Gecikmeli (~500 ms) |
| Basınç seviyeleri | 2 (peek + pop) | 1 (bağlam menüsü) |
| Dokunsal geri bildirim | Taptic Engine (tıklama simülasyonu) | Taptic Engine (tıklama simülasyonu) |
| App Store | Simgede Hızlı Eylemler | Simgede Hızlı Eylemler |
| Kalibrasyon | Kullanıcı kuvvetine göre otomatik kalibrasyon | Gerekmez |
| Onarılabilirlik | Karmaşık (ekranda sensörler) | Standart |
UX Üzerindeki Etkisi: 3D Touch'ın hızı daha yüksektir — kullanıcı sert bastığında bağlam menüsünü hemen alır. Haptic Touch, 500 ms'lik bir duraklama gerektirir, bu da daha yavaş hissettirir. Ancak Apple, bunu dokunsal geri bildirim ve görsel animasyonla telafi eder. 3D Touch'tan Haptic Touch'a geçen kullanıcılar genellikle hız farkını fark eder. Geliştiriciler için geçiş saydamdır: UIContextMenuInteraction her iki teknolojide de aynı şekilde çalışır.
Hızlı Eylemler (Quick Actions) — ana ekrandaki uygulama simgesinde bir bağlam menüsü. Simgeye sert basmak (3D Touch) veya uzun basmak (Haptic Touch) en fazla 4 hızlı eylem gösterir: "Yeni mesaj" (Messages), "Fotoğraf çek" (Camera), "Ara" (Safari). Info.plist anahtarı UIApplicationShortcutItems veya UIApplicationShortcutItem temsilcisi aracılığıyla uygulanır. Hızlı Eylemler, iOS 13+ (Haptic Touch) veya 3D Touch'a sahip tüm cihazlarda kullanılabilir.
Klavye izleme dörtgeni — iOS klavyesine sert basmak, onu izleme dörtgeni moduna geçirir: tuşlar etkisiz hale gelir ve parmak hareketi imleci hareket ettirir. 3D Touch, klavyenin herhangi bir yerine sert basarak izleme dörtgenini etkinleştiriyordu. Haptic Touch, boşluk çubuğuna uzun basarak izleme dörtgenini etkinleştirir. İzleme dörtgeni modu, 3D Touch'ın en popüler kullanımlarından biri haline geldi — kullanıcılar metin düzenlerken hassas imleç konumlandırmayı takdir eder.
Bağlantı ve fotoğraf önizlemesi — Safari'de bir bağlantıya sert basmak, gezinti yapmadan sayfa önizlemesini (peek) gösterir. Benzer şekilde: Messages'da bir fotoğrafa basmak büyütülmüş bir sürüm açar. Peek modunda yukarı kaydırmak eylemleri gösterir: "Aç", "Okuma Listesine Ekle", "Kopyala". Tüm bu senaryolar, iOS'un modern sürümlerinde UIContextMenuInteraction aracılığıyla çalışır.
Çizim ve yaratıcı uygulamalar — Procreate, Photoshop ve diğer çizim uygulamalarında, 3D Touch'ın basınç kuvveti fırça kalınlığını, opaklığı veya renk doygunluğunu kontrol eder. Uygulamalar UITouch.force'u (0.0–1.0) okur ve bunu araç parametrelerine dönüştürür. Ancak, çizim için iPad'deki Apple Pencil daha hassas basınç kontrolü sağlar (eğim ve azimut desteği ile), bu nedenle iPhone'daki yaratıcı uygulamalarda 3D Touch daha az talep görmektedir.
Sıkça Sorulan Sorular
3D Touch, ekrandaki kapasitif sensörler aracılığıyla basınç kuvvetini ölçen bir donanım teknolojisidir (iPhone 6S–XS). Haptic Touch, Uzun Basma ve Taptic Engine'den dokunsal geri bildirim kullanan bir yazılım simülasyonudur. 3D Touch daha hızlıdır (100 ms'ye karşı 500 ms) ve iki kuvvet seviyesini (peek + pop) destekler. Haptic Touch, iPhone XR, tüm iPhone 11–16 modelleri, iPad ve iPod touch dahil olmak üzere iOS 13+ olan tüm cihazlarda kullanılabilir.
Kodda, traitCollection.forceTouchCapability kullanın. .available değeri 3D Touch'ın desteklendiği, .unavailable desteklenmediği, .unknown ise henüz belirlenmediği anlamına gelir (traitCollectionDidChange'i bekleyin). Haptic Touch'lı cihazlarda, forceTouchCapability .unavailable döndürür, çünkü Haptic Touch donanım kuvvet sensörlerini kullanmaz. Kullanıcılar için: Ayarlar → Erişilebilirlik → Dokunma → 3D Touch (yalnızca eski iPhone'larda) altında kontrol edin.
Apple, 3D Touch'ı Haptic Touch ile değiştirdi birkaç nedenden dolayı: basınç sensörlü ekranların yüksek üretim maliyeti, onarım karmaşıklığı (ekrana entegre sensörler), sınırlı kullanıcı farkındalığı (birçok kişi özelliği bilmiyordu) ve 3D Touch için kalibre edilmesi daha zor olan Face ID'li OLED ekranlara geçiş. Haptic Touch daha ucuz, daha basit ve daha fazla sayıda cihazda kullanılabilir.
3D Touch şunlar tarafından desteklenir: iPhone 6S, 6S Plus, 7, 7 Plus, 8, 8 Plus, X, XS, XS Max. iPhone XR'da 3D Touch yoktur (Haptic Touch'lı ilk). Tüm iPhone 11, 12, 13, 14, 15, 16 ve SE (2. ve 3. nesil) modelleri Haptic Touch kullanır. iPad'de hiçbir zaman 3D Touch olmadı. 3D Touch'lı cihazlarda hassasiyet ayarları da mevcuttur (Ayarlar → Erişilebilirlik → Dokunma → 3D Touch).
Evet, iOS otomatik olarak 3D Touch'ı öykünür donanım desteği olmayan cihazlarda Haptic Touch aracılığıyla. UIContextMenuInteraction API'si tüm cihazlarda aynı şekilde çalışır — sistem tetikleyiciyi (3D Touch veya Uzun Basma) kendisi seçer. Bu, kodunuz için saydamdır: bağlam menüsü iOS 13+ olan tüm cihazlarda görünür. 3D Touch ve Haptic Touch için ayrı mantık yazmanız gerekmez — UIContextMenuConfiguration kullanın.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun