Kedengarannya sederhana .. Pegang Trackpad, gerakkan jari, lepaskan .. Tapi entah bagaimana menggeseknya tidak dipicu (pan malah dipicu)
UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc]
initWithTarget:v action:@selector(handleSwipe:)];
swipeGesture.direction= UISwipeGestureRecognizerDirectionUp;
[v addGestureRecognizer:swipeGesture];
Geser dikenali oleh urutan di atas sebagai gantinya.
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc]
initWithTarget:v action:@selector(handlePan:)];
[v addGestureRecognizer: panGesture];
Jika pan dikomentari, gesek dikenali oleh gerakan yang sama .. Dengan ini, 2 pertanyaan:
- Lalu apa perbedaan antara panci dan gesek?
- Bagaimana seseorang dapat mensimulasikan gesekan pada simulator iPhone?
ios
gesture-recognition
gestures
James Raitsev
sumber
sumber
Jawaban:
Menurut definisi, gerakan swipe juga harus merupakan gerakan pan - keduanya melibatkan gerakan translasi titik sentuh. Perbedaannya ada pada semantik pengenal: pengenal pan mencari awal gerakan translasi dan terus melaporkan gerakan ke arah mana pun dari waktu ke waktu, sementara pengenal gesek membuat keputusan seketika apakah sentuhan pengguna bergerak secara linear ke arah yang diperlukan.
Secara default, tidak ada dua pengenal yang akan mengenali gerakan yang sama, jadi ada konflik antara panci dan geser. Kemungkinan besar, pengenal pan Anda "memenangkan" konflik karena gerakannya lebih sederhana / lebih umum: Babatan adalah panci tetapi panci mungkin bukan gesekan, jadi panci mengenali terlebih dahulu dan mengecualikan pengenal lainnya.
Anda harus dapat menyelesaikan konflik ini menggunakan metode delegasi
gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
, atau mungkin tanpa delegasi dengan membuat pengenal pan bergantung pada pengenal gesek denganrequireGestureRecognizerToFail:
.Dengan konflik terselesaikan, Anda harus dapat mensimulasikan gesekan satu jari dengan menyeret mouse dengan cepat. (Meskipun mouse lebih presisi dari jari Anda, itu sedikit lebih rewel daripada melakukan hal yang sebenarnya pada perangkat.) Penggeser dua jari / gesek dapat dilakukan dengan menahan tombol Option & Shift.
sumber
Gerakan Gesek akan bekerja ketika Anda menyeret jari hanya ke arah tertentu (geser ke atas, geser ke bawah, geser ke kiri, geser ke kanan). Misalnya sel swipeable di pengontrol tampilan tabel.
Pan Gesture akan berfungsi saat Anda menyeret jari ke arah mana pun. Anda dapat memberikan akselerasi atau perlambatan untuk itu. Misalnya, memindahkan objek dari satu tempat ke tempat lain atau memutar pemintal ..
sumber
UIPanGestureRecognizer adalah subkelas konkret dari UIGestureRecognizer yang mencari gerakan gerakan mendrag (menyeret). Pengguna harus menekan satu atau lebih jari pada tampilan saat mereka menggesernya. Klien yang menerapkan metode tindakan untuk pengenal isyarat ini dapat menanyakannya untuk terjemahan dan kecepatan isyarat saat ini.
Gerakan panning terus menerus. Itu dimulai ( dimulai ) ketika jumlah minimum jari diperbolehkan ( minimumNumberOfTouches ) telah cukup bergerak untuk dianggap sebagai panci. Ini berubah (diubah) ketika jari bergerak sementara setidaknya jumlah minimum jari ditekan ke bawah. Itu berakhir ( berakhir ) ketika semua jari terangkat.
Klien dari kelas ini dapat, dalam metode tindakan mereka, permintaan objek UIPanGestureRecognizer untuk terjemahan gerakan saat ini ( terjemahan (dalam :) ) dan kecepatan terjemahan ( kecepatan (dalam :) ). Mereka dapat menentukan tampilan yang sistem koordinatnya harus digunakan untuk nilai terjemahan dan kecepatan. Klien juga dapat mengatur ulang terjemahan ke nilai yang diinginkan.
Contoh Demo Swift 3 UIPanGestureRecognizer: - Tautan Sumber Daya
Sesuai dokumen apel. Apple UITapGestureRecognizer
UITapGestureRecognizer adalah subkelas konkret dari UIGestureRecognizer yang mencari ketukan tunggal atau ganda. Agar gerakan dapat dikenali, jumlah jari yang ditentukan harus mengetuk tampilan beberapa kali.
Meskipun ketukan adalah gerakan diskrit, ketukan terpisah untuk setiap kondisi pengenal isyarat; dengan demikian pesan tindakan yang terkait dikirim ketika gerakan dimulai dan dikirim untuk setiap keadaan perantara hingga (dan termasuk) keadaan akhir gerakan. Karenanya, kode yang menangani gerakan ketuk harus menguji status gerakan itu.
Swift 3 Demo Contoh Sumber Daya UITapGestureRecognizer Demo
Contoh Gambar untuk Pengenal
sumber
Menurut http://hammerjs.github.io/ , saya pikir perbedaannya adalah:
Gerakannya sama, keduanya menggunakan satu jari dan bergerak.
sumber