Saya punya UIView dan saya telah menambahkan gerakan tap ke dalamnya:
let tap = UITapGestureRecognizer(target: self, action: Selector("handleTap:"))
tap.delegate = self
myView.addGesture(tap)
Saya mencoba menyebutnya pemrograman di testfile.
sendActionForEvent
Saya menggunakan fungsi ini, tetapi tidak berfungsi:
myView.sendActionForEvent(UIEvents.touchUpDown)
Ini menunjukkan pemilih yang tidak dikenal dikirim ke instance.
Bagaimana saya bisa menyelesaikan masalah ini?
imageView.userInteractionEnabled = true
jika Anda menggunakan tampilan gambar. Terlalu lama terjebak dalam hal itu.Jawaban:
Anda perlu menginisialisasi
UITapGestureRecognizer
dengan target dan tindakan, seperti:Kemudian, Anda harus mengimplementasikan handler, yang akan dipanggil setiap kali ketika acara tap terjadi:
Jadi sekarang memanggil penangan event tap gesture recognitioner Anda semudah memanggil metode:
sumber
tap.delegate = self
tidak diperlukan, karena Anda sudah menetapkan target dan tindakanBagi siapa saja yang mencari solusi Swift 3
sumber
isUserInteractionEnabled
apakah benar-benar diperlukan? Nilai defaultnya salah?view.isUserInteractionEnabled = true
adalah kuncinya ketika tampilan Anda adalah ImageView atau subkelas UIVIew alih-alih UIControl.Untuk Swift 4 :
Di Swift 4, Anda perlu secara eksplisit menunjukkan bahwa fungsi yang dipicu dapat dipanggil dari Objective-C, jadi Anda perlu menambahkan @objc juga fungsi handleTap Anda.
Lihat jawaban @Ali Beadle di sini: Swift 4 menambahkan gesture: override vs @objc
sumber
view.isUserInteractionEnabled = true
adalah kuncinya ketika tampilan Anda adalah ImageView atau subkelas UIVIew alih-alih UIControl.Hanya sebuah catatan - Jangan lupa untuk mengaktifkan interaksi pada tampilan:
sumber
LANGKAH 1
LANGKAH 2
LANGKAH: 3
LANGKAH: 4
KELUARAN
sumber
Menerapkan gerakan tap
Memanggil fungsi ini ketika ketukan dikenali.
Pembaruan untuk Swift 3
sumber
Cepat 4
sumber
Ini adalah cara kerjanya di Swift 3:
sumber
Jawaban lengkap untuk Swift 4
Langkah 1: buat saluran keluar untuk tampilan
Langkah 2: tentukan gerakan tap
Langkah 3: buat fungsi ObjC (dipanggil saat tampilan disadap)
Langkah 4: tambahkan berikut ini di dalam viewDidLoad ()
sumber
Swift 5.1 Contoh untuk tiga tampilan
Langkah: 1 -> Tambahkan tampilan storyboard dan tambahkan outlet viewController UIView
Langkah: 2 -> Tambahkan Tag tampilan storyBoard
Langkah: 3 -> Tambahkan gerakan
Langkah: 4 -> pilih tampilan
sumber
Saya mengerjakan Xcode 6.4 dengan cepat. Lihat di bawah.
sumber
Jika Anda ingin kode Objective C diberikan di bawah ini,
atau Anda ingin kode cepat diberikan di bawah ini,
sumber
Anda perlu menginisialisasi UITapGestureRecognizer dengan target dan tindakan, seperti:
Kemudian, Anda harus mengimplementasikan handler, yang akan dipanggil setiap kali ketika acara tap terjadi:
sumber
sumber
Cepat 4
Pertama, buat objek UITapGestureRecognizer
Langkah kedua adalah menginisialisasi UITapGestureReconizer. Aktifkan interaksi pengguna, lalu tambahkan.
Ketiga, buat metode
sumber
coba ekstensi berikut
dan kemudian menggunakannya:
Anda bahkan dapat menggunakannya untuk sel
sumber
Saya mengerjakan Xcode 7.3.1 di Swift 2.2. Lihat di bawah.
sumber
addTapGesture()
di AndaviewDidLoad()
Saya ingin menentukan dua poin yang terus membuat saya bermasalah.
sumber
xCode 9.3, Swift 4.0
sumber
Di dalam ViewDidLoad
sumber
Berikut adalah cara paling sederhana untuk menambahkan Gerakan pada Tampilan di Swift 5
sumber
Coba kode cepat berikut (diuji dalam Xcode 6.3.1):
Perhatikan bahwa target Anda dapat berupa subclass dari UIResponder, lihat (diuji dalam Xcode 6.3.1):
sumber
Alih-alih memanggil UITapGestureRecognizer myView, Anda dapat langsung memanggil
handleTap
fungsinya,sumber