UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapTapTap:)];
[self.view1 addGestureRecognizer:tapGesture];
[self.view2 addGestureRecognizer:tapGesture];
[tapGesture release];
Dalam kode di atas hanya ketukan view2
yang dikenali. Jika saya mengomentari baris ketiga maka ketukan view1
diakui. Jika saya benar dan Anda hanya dapat menggunakan pengukur gerakan satu kali, saya tidak yakin apakah ini bug atau hanya perlu dokumentasi lagi.
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didPressed:)]; [self.view1 addGestureRecognizer:tapRecognizer]; [self.view2 addGestureRecognizer:tapRecognizer];
Output view1 tidak memiliki larik pengenal isyarat; view2 telah mendapatkan larik pengenal isyaratSaya mengatasinya dengan menggunakan di bawah ini.
Kemudian dalam metode handleLongPress saya, saya hanya menetapkan UIButton sama dengan tampilan pengenal gerakan dan bercabang apa yang saya lakukan berdasarkan tombol itu
sumber
Untuk Swift 3 jika ada yang membutuhkan ini: Berdasarkan Bhavik Rathod Jawaban di atas.
sumber
getGestureRecognize
karena itulah fungsi iniKita bisa melakukan sesuatu. Seperti ini, mudah dan sederhana
1) buat fungsi seperti di bawah ini di controller Anda (fungsi ini akan mengembalikan GestureRecognizer)
2) sekarang atur pengenal ini dalam banyak tampilan
sumber
setNumberOfTapsRequired:1
itu tidak perluTidak, Anda tidak boleh melampirkan pengenal isyarat ke lebih dari satu tampilan.
Ada informasi eksplisit ini dalam dokumentasi Apple:
Panduan Penanganan Acara untuk iOS - Pengenalan Gerakan Apple Developer Library
Sementara yang lain menyebutkan mereka mungkin bekerja dalam beberapa kasus itu jelas bertentangan dengan dokumentasi dan dapat berubah dalam versi iOS apa pun di masa depan.
Yang dapat Anda lakukan adalah menambahkan recogniser gerakan terpisah ke pandangan yang ingin Anda pantau dan mereka dapat berbagi aksi bersama.
sumber
Nah, jika seseorang tidak ingin kode untuk menambahkan tampilan gerakan untuk beberapa tombol seperti kwalker telah menjawab di atas, dan ingin melakukannya melalui Interface Builder ini dapat membantu Anda.
1) Anda dapat menambahkan Long Tekan gesture Recognizer dari Object Library seperti Anda menambahkan objek lain seperti UIButtons dan UILabels.
Awalnya yang saya gunakan adalah saya hanya mengambil satu
2) Mengatur outlet referensi ke
UIButton
dan mengirim tindakan dengan Pemilik File.sumber
jika Anda telah memperbaiki tampilan, saya sarankan Anda melakukan sesuatu seperti ini
cara itu akan mengurangi beberapa variabel tidak berguna yang berbeda
sumber
Anda dapat membuat ekstensi generik pada tampilan untuk menambahkan pengenal isyarat dengan mudah. Ini hanya contoh tetapi bisa terlihat seperti ini
Untuk menambahkan pengenal 2 ketuk pada tampilan yang Anda sebut saja:
Anda juga dapat dengan mudah menambahkan pengenal gesek
dan seterusnya. Ingat saja bahwa target harus ditautkan ke pemilih.
sumber
Ganti kelas dengan '
<UIScrollViewDelegate>
'Dan gunakan metode ini di kelas .m:
Metode ini akan membantu Anda untuk mengaktifkan beberapa gesekan pada satu tampilan ..
sumber
Bagaimana dengan menulis ulang (buat ulang) GestureRecognize Anda setiap kali Anda menambahkan pengenal isyarat yang menunjuk ke fungsi yang sama. Dalam kasus di bawah ini berfungsi. Saya menggunakan IBOutletCollection
Swift 2:
sumber
Anda dapat melakukannya menggunakan kode ini pandangan saya yang merupakan tampilan gambar di xib.
sumber
500
semua tag tampilan Anda dan kemudian mengurangi500
? Mengapa tidak memulai tag Anda di1
(atau bahkan0
) saja501
?1
yang baru saja saya salin kode ini dari aplikasi saya di mana saya memberikannya501
. Tapi ya jangan memberikan0
bcoz saya telah membaca di suatu tempat yang selalu menunjukkan pandangan orang tua sehingga akan membuat komplikasi, Percayalah, saya telah menghadapinya.