Saya mendapatkan kesalahan samar ini pertama kali (dan hanya pertama kali) tampilan saya dimuat karena baris kode berikut:
- (void)viewWillAppear:(BOOL)animated
{
[textField becomeFirstResponder];
}
Ada penundaan yang nyata (~ 3 - 4 detik, bahkan di simulator) karena ini yang membuat aplikasi saya terasa tidak responsif. Apakah ada yang tahu cara memperbaikinya? Saya tidak dapat menemukan dokumentasi apa pun tentangnya di situs Apple, atau solusi apa pun di sini atau di Google.
Anehnya, situasi yang berlawanan terjadi jika saya memasukkan garis -viewDidAppear:
alih-alih -viewWillAppear:
; Artinya, bukannya mencetak kesalahan hanya saat pertama kali keyboard ditampilkan dan tidak pernah lagi, kesalahan tidak dicetak pertama kali tetapi setiap kali setelahnya. Ini membuat saya sangat pusing.
sumber
becomeFirstResponder
segera menampilkan keyboard, tanpa penundaan .Saya mendapatkan kesalahan serupa ketika dengan cepat:
Saya perhatikan saya hanya mendapatkannya di simulator dan bukan di perangkat. Selain itu, saya terjebak dalam putaran tak terbatas.
Solusi saya adalah menunda penyajian tampilan modal baru. Tampaknya memperbarui hierarki tampilan dengan cepat menyebabkan beberapa kondisi balapan dalam kode Apple.
Dengan mengingat hal itu, coba ini:
Anda mungkin mengalami masalah saat menyajikan keyboard untuk UITextField yang belum ada di layar. Ini mungkin menyebabkan masalah yang mirip dengan saya.
Selain itu, Anda menjeda agar hierarki diberi waktu untuk memperbarui sebelum menampilkan keyboard, untuk berjaga-jaga.
Semoga ini membantu.
sumber
Pastikan Anda hanya berinteraksi dengan UI di utas utama. Saya mendapat
wait_fences: failed to receive reply: 10004003
saat saya duduk di sana menunggu UIAlertView ditampilkan selama sekitar 5 detik karena kode yang relevan dieksekusi pada utas latar belakang. Anda dapat memastikan dengan meletakkan kode Anda di blok dan mengirimkannya ke utas utama:sumber
Setelah mencoba semua yang saya dapat temukan di Google dan tidak ada yang berhasil, inilah yang memecahkan masalah bagi saya. Kuncinya adalah saya melakukan hal ini dalam metode delegasi willDismissWithButtonIndex. Sebelum saya melakukannya di tempat lain.
sumber
Jika Anda memiliki baris berikut di viewDidLoad, itu dapat menyebabkan pesan ini. Beri komentar pada baris berikut.
(Anda dapat menonaktifkan bilah status dari file plist aplikasi).
sumber
Setelah beberapa pengujian, aturan besarnya adalah: "Jangan melakukan animasi sebelum animasi ditutup atau pertunjukan animasi.".
Sebagai contoh:
-dismissModalViewControllerAnimated:YES
setelah delegasi callback (tunggu fade out dari tampilan peringatan sebelum melakukan ini menggunakan callback)UIAlertView -alertView:
will
DismissWithButtonIndex:
-alertView:
did
DismissWithButtonIndex:
becomeFirstResponder
) sebelum pengontrol tampilan Anda ada di layar.Hal-hal buruk bisa saja terjadi.
Semoga bermanfaat ;-)
sumber
Ini berfungsi agar saya membuat keyboard segera muncul dengan sendirinya, tanpa animasi atau penundaan.
Membiarkan
textField
menjadi variabel instance dariMyViewController
(subclass dariUIViewController
).Hubungi
[textField becomeFirstResponder]
diinitWithNibName:bundle:
(untuk subclass dariUIViewController
) atauinitWithStyle:
(untuk subclass dariUITableViewController
), tidak dalamviewDidLoad
. Misalnya:Atau, panggil setelah menginisialisasi tetapi sebelum mendorong
UIViewController
. Misalnya:sumber
view
, jadi tidak pasti apakah file nib telah dimuat. JikatextField
adalah IBOutlet, maka saya pikir itu akan menjadi nol pada saat ini.Sudah selesai
[textfield becomeFirstResponder];
Dan setelah Anda mendapatkan nilai dari textfield di kode Anda, lakukan
[textfield resignFirstResponder];
. Itu akan membantu Anda, saya pikir.sumber
Jika Anda menjalankan Simulator iPhone 4.0 saat ini, pesan kesalahan ini sering muncul saat memutar layar (atau saat beranimasi setelah memutar layar) disertai dengan jeda 1-2 detik dalam animasi.
Ini adalah bug dalam versi Simulator ini dan akan segera diperbaiki.
sumber
wait_fences
pesan tidak muncul di simulator 3.1Lihat di sini untuk info lebih lanjut: http://www.iphonedevsdk.com/forum/iphone-sdk-development-advanced-discussion/17373-wait_fences-failed-receive-reply-10004003-a.html
Masalah Anda terkait.
sumber
timpa
viewDidappear
, bukanviewWillAppear
:sumber
Saya dapat mensimulasikan ini satu-satu melalui kode UIAlertView ini.
Ketika NSLocalizedString tidak didefinisikan dalam file Localizable.strings, akan memakan waktu lama untuk mencari teks, sehingga peringatan akan muncul dan "wait_fences: gagal menerima balasan: 10004003" akan ditampilkan.
Bagi saya, saya hanya perlu menambahkan teks ke file Localizable.strings dan masalah saya terpecahkan. Mungkinkah ini juga kasus kejadian lainnya?
sumber
Juga dengan UIAlertView. Yang menyelesaikannya bagi saya adalah pengunduran diri seperti di bawah ini, seperti yang disebutkan lab pergudangan sebelumnya.
Delegasi UIAlertViewDelegate lainnya tidak memperbaiki masalah tersebut.
sumber
Masalahnya adalah ada kondisi balapan di kode Apple. Biasanya, ini ada hubungannya dengan pembaruan UI yang salah.
Dalam pengalaman saya, Anda juga belum memanggil super di viewDidAppear, viewWillAppear, dll. Atau Anda mencoba menampilkan UIAlertView di viewDidLoad atau viewWillAppear.
Saat Anda menambahkan UIAlertView, kerangka kerja memerlukan referensi ke tampilan induk Anda. Tetapi jika Anda berada di viewWillAppear atau viewDidLoad, tampilan tidak benar-benar ditampilkan ... Anda harus mempertimbangkan untuk memindahkan kode ke viewDidAppear di mana tampilan siap digunakan oleh UIAlertView.
sumber
Apakah Bidang Teks terdapat dalam tampilan itu, atau di dalam sesuatu yang lain? Anda hanya dapat mengirim 'intoFirstRepsonder' ke sesuatu yang dimuat langsung dalam tampilan tersebut. Jika disimpan di beberapa komponen widget lainnya, Anda tidak boleh menyetel status responden pertama di widget ini, melainkan di widget yang sedang dibuat. Misalnya, jika Anda menambahkan bidang teks ke tampilan peringatan, karena pertunjukan terjadi secara tidak serempak, itu mungkin belum tersedia pada saat Anda memanggil beFirstResponder. (Idealnya, Anda akan memiliki sendiri pandangan peringatan kelas Anda dan menentukan bidang teks dalam itu, dan ketika bahwa pandangan menerima viewDidAppear, Anda akan mengatur textfield sebagai responden pertama pada saat itu.)
sumber
Saya juga mendapatkan pesan dan metode dan
wait_fences: failed to receive reply: 10004003
saya tidak melakukan apa pun selain mengirim pesan ke . Dalam kasus saya itu terjadi ketika saya memiliki pertunjukan di saya dan pengguna malah menekan tombol perangkat bulat iPhone dan kemudian kembali ke aplikasi. Ini terlihat dari tanganku.viewWill...
viewDid...
super
UIAlertView
GameViewController
sumber
Alertview atau lembar tindakan harus ditampilkan di utas utama ... jadi jika Anda membuat koneksi sinkron dan melakukan operasi itu di utas lain dan menampilkan peringatan berdasarkan output yang Anda terima dari operasi itu, maka Anda akan mendapatkan pesan kesalahan ini wait_fences: gagal terima balasan: 10004003. Anda dapat melakukan sesuatu seperti ....
dan tampilkan peringatan dalam metode handleOutput yang meneruskan string respons keluaran sebagai parameter.
sumber
Solusi ada di sini!
Saya memiliki kesalahan yang sama, sekarang saya mendapatkan solusinya, ini dapat membantu Anda.
sumber