Apakah ada cara mudah menunda pemanggilan metode selama 1 detik?
Saya punya UIImageView
yang bereaksi pada acara sentuhan. Ketika sentuhan terdeteksi, beberapa animasi terjadi di aplikasi. Setelah satu detik, saya ingin memanggil metode lain. Dalam hal ini, saya tidak dapat menggunakan animationDidStop
pemilih.
ios
objective-c
iphone
cocoa-touch
uikit
Terima kasih
sumber
sumber
Jawaban:
Referensi Dokumen
sumber
Anda juga bisa menggunakan blok
Sebagian besar waktu Anda ingin menggunakan dispatch_get_main_queue, meskipun jika tidak ada UI dalam metode ini Anda bisa menggunakan antrian global .
Edit:
Versi Swift 3:
Sama-sama,
DispatchQueue.global().asyncAfter(...
mungkin juga menjadi pilihan yang bagus.sumber
dispatch_after
dan tekan enterdispatch_after
, ini benar-benar cara yang sangat mudah untuk melakukannya, ditambah Anda dapat meneruskan properti ke metode yang Anda panggil, yang sangat bagus.Cara terbaik untuk dilakukan adalah:
Anda juga dapat melewatkan nihil sebagai parameter withObject.
contoh:
sumber
Sudah ada banyak jawaban dan semuanya benar. Jika Anda ingin menggunakan,
dispatch_after
Anda harus mencari potongan yang termasuk di dalamCode Snippet Library
di bagian kanan bawah (di mana Anda dapat memilihUI
elemen).Jadi, Anda hanya perlu memanggil cuplikan ini dengan menulis kode pengiriman :
sumber
Anda dapat menggunakan selector perform untuk setelah metode penundaan 0,1 detik memanggil kode berikut untuk melakukan ini.
sumber
Anda juga bisa:
Kasus ini Anda harus memalsukan beberapa perubahan pada beberapa tampilan untuk mendapatkan karya animasi. Memang memang hacky, tapi saya suka hal-hal berbasis blok. Atau bungkus jawaban @mcfedr di bawah ini.
sumber
Kamu bisa melakukan ini
sumber
Swift 2.x
Swift 3.x - & - Swift 4
atau lulus a
escaping closure
sumber
Ada solusi Swift 3 dari solusi yang diperiksa:
Dan ada metode
sumber
Gunakan di Swift 3
sumber
CATATAN: ini akan menjeda seluruh utas Anda, bukan hanya satu metode.
Membuat panggilan untuk tidur / menunggu / berhenti selama 1000 ms sebelum memanggil metode Anda?
Sunting: Jawaban di atas berlaku untuk pertanyaan umum "Bagaimana saya bisa menunda pemanggilan metode selama 1 detik?", Yang merupakan pertanyaan yang ditanyakan pada saat jawaban (faktanya jawaban diberikan dalam 7 menit dari pertanyaan awal: - )). Tidak ada Info yang diberikan tentang bahasa pada waktu itu, jadi berhentilah mengeluh tentang cara yang tepat dalam menggunakan tidur di XCode dan kurangnya kelas ...
sumber