Gesture Nedir?
Kullanıcının parmak hareketi ile gerçekleştirdiği etkileşimler. Tap, swipe, pinch, long press gibi. 2026 itibarıyla gesture tabanlı navigasyon hem iOS hem Android'de varsayılan hale gelmiştir ve buton tabanlı navigasyon azalmaktadır.
Temel Gesture'lar
Tap (Dokunma)
- Tek dokunma: Seçim, buton tıklama
- Çift dokunma: Zoom, beğeni (Instagram)
- İki parmak tap: Özel aksiyonlar
- Üç parmak tap: Accessibility kısayolları (iOS)
Swipe (Kaydırma)
- Sola/sağa: Liste öğesi aksiyonları (sil, arşivle)
- Yukarı/aşağı: Scroll, pull to refresh
- Kenardan swipe: Geri navigasyon (iOS)
- Tam ekran swipe: Story/Reel geçişi (TikTok, Instagram)
Long Press (Uzun Basma)
- Bağlam menüsü açma
- Drag & drop başlatma
- iOS: Haptic touch menüsü (context menu, peek/pop)
- Öğe seçim modu (çoklu seçim başlatma)
- Force touch kaldırıldı, long press standart
Pinch (Sıkıştırma)
- Zoom in/out (fotoğraf, harita)
- İki parmak yaklaştırma/uzaklaştırma
- Web view'da sayfa yakınlaştırma
Pan (Sürükleme)
- Harita kaydırma
- Slider kontrolü
- Drag & drop (liste sıralama)
- Bottom sheet boyutlandırma
- Carousel/gallery gezinme
Rotate (Döndürme)
- Fotoğraf/görsel döndürme
- İki parmak dönme hareketi
- Harita yönlendirme
Swipe Actions
Liste öğelerinde swipe aksiyonları:
iOS
- Leading swipe (sağa): Pozitif aksiyon (okundu işaretle, pin)
- Trailing swipe (sola): Negatif aksiyon (sil, arşivle)
- Tam swipe: Hızlı aksiyon (sil)
- SwiftUI: .swipeActions modifier ile kolay implementasyon
Android
- Benzer kalıp, Material Design
- ItemTouchHelper ile implementasyon
- Compose: SwipeToDismiss component'i
Platform Sistem Gesture'ları
iOS
- Sol kenardan sağa swipe: Geri
- Alt kenardan yukarı: Home / app switcher
- Üstten aşağı: Bildirim merkezi / Kontrol Merkezi
- Bu gesture'lara müdahale ETMEYİN
Android
- Sol/sağ kenardan: Geri (gesture nav)
- Alttan yukarı: Home
- Alttan yukarı + bekle: App switcher
- Android 15+ ile predictive back gesture (geri animasyonu önizlemesi)
- Uygulamanız predictive back API'ını desteklemeli
Gesture Çakışma Çözümleri
- Edge gesture'lar ile uygulama swipe'ları çakışabilir
- iOS: UIScreenEdgePanGestureRecognizer ile edge algılama
- Android: Exclusion zones tanımla (belirli bölgelerde sistem gesture'ı devre dışı)
- simultaneousGesture ve exclusiveGesture modifier'ları
- Gesture priority yönetimi (simultaneousWithOtherGestureRecognizer)
React Native Gesture
- react-native-gesture-handler: Yüksek performanslı gesture (UI thread)
- react-native-reanimated: Gesture + animasyon (worklet tabanlı, 60fps)
- PanGestureHandler, PinchGestureHandler, TapGestureHandler
- Gesture.Pan(), Gesture.Pinch(), Gesture.Tap()
- GestureDetector component'i ile kolay kullanım
- Gesture.Simultaneous(), Gesture.Exclusive() ile çakışma yönetimi
Best Practices
- Sistem gesture'larıyla çakışma yaratma
- Gesture keşfedilebilirliği (ilk seferde nasıl öğrenecek?)
- Görsel ipucu ver (swipe hint animasyonu, coach marks)
- Gesture + buton alternatifi sun (herkes gesture kullanmaz)
- Accessibility: VoiceOver/TalkBack ile gesture'lar çalışmaz, alternatif sun
- Gesture velocity ve threshold değerlerini doğru ayarla
- Animasyon ile gesture'ı birleştir (kullanıcı parmağını takip eden UI)
Gesture'lar güçlü ama gizli etkileşimlerdir. Keşfedilebilirlik olmadan işe yaramaz.