Baiklah, masalah ini membuat saya gila.
Diperlukan sekitar 3-4 detik untuk keyboard muncul setelah saya menyentuh layar saya UITextField
. Ini hanya terjadi pada saat pertama kali keyboard muncul sejak aplikasi diluncurkan, setelah itu animasi dimulai secara instan.
Pada awalnya saya pikir itu masalah memuat terlalu banyak gambar, atau saya UITableView
, tapi saya baru saja membuat proyek baru dengan hanya UITextField
, dan saya masih mengalami masalah ini. Saya menggunakan iOS 5, Xcode ver 4.2, dan berjalan di iPhone 4S.
Ini kode saya:
#import "ViewController.h"
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(20, 20, 280, 30)];
textField.borderStyle = UITextBorderStyleRoundedRect;
textField.delegate = self;
[self.view addSubview:textField];
}
@end
Apakah ini masalah umum untuk semua aplikasi?
Saat ini, satu-satunya cara saya dapat membuatnya agak lebih baik adalah dengan textField
menjadi / mengundurkan diri sebagai responden pertama viewDidAppear
, tetapi itu tidak menyelesaikan masalah sepenuhnya - itu hanya memuat penundaan ke saat tampilan dimuat sebagai gantinya. Jika saya mengklik textField
segera ketika tampilan dimuat, saya masih mendapatkan masalah; jika saya menunggu 3-4 detik setelah tampilan dimuat sebelum menyentuh textField, saya tidak mendapatkan penundaan.
Jadi masalahnya BUKAN hanya terbatas pada instalasi pertama seperti yang saya pikirkan sebelumnya, tetapi terjadi setiap kali aplikasi diluncurkan. Inilah solusi saya yang menyelesaikan masalah sepenuhnya.
sumber
Ya, saya juga mendapat penundaan beberapa detik pada iPhone 4 terbaru. Jangan panik. Untuk beberapa alasan, itu hanya terjadi saat aplikasi pertama kali dimuat dari Xcode di Debug. Ketika saya melakukan Release, saya tidak mendapatkan penundaan. Lupakan saja...
sumber
Fastest, Smallest [-Os]
. Anda dapat mengubahnya diBuild Settings > Optimization Level
Ini adalah masalah yang diketahui.
Keyboard preloading tampaknya menjanjikan. Periksa Preloading the UIKeyboard.
Beberapa bahan bacaan tambahan:
Tampilan keyboard virtual iPhone awal lambat untuk UITextField. Apakah hack ini diperlukan?
Keyboard UITextField memblokir runloop saat memuat?
http://www.iphonedevsdk.com/forum/iphone-sdk-development/12114-uitextfield-loooong-delay-when-first-tapped.html
sumber
Anda dapat menggunakan solusi Vadoff di Swift dengan menambahkan ini ke didFinishLaunchingWithOptions:
Ini bekerja untuk saya di iOS 8.
sumber
Kode dalam blok ditambahkan ke antrian utama dan berjalan secara tidak sinkron. (jangan mengunci utas)
sumber
Lihat jawaban ini . Mereka menyarankan UIResponder + KeyboardCache . Sederhana dan mengagumkan. Diuji pada iOS 7.
sumber
Masalah terkait, di mana UIViewController akan lamban untuk dipresentasikan, diselesaikan dengan menggunakan font sistem alih-alih font kustom pada UITextField. Mungkin menggunakan font sistem mungkin juga berfungsi untuk masalah ini?
sumber
Bug ini sepertinya diperbaiki di iOS 9.2.1. Sejak memutakhirkan perangkat saya, saya tidak lagi memiliki penundaan antara mengetuk bidang teks dan keyboard yang muncul saat perangkat saya terhubung ke komputer saya.
sumber
Jawaban yang dipilih ini menyebabkan BAD_EXC macet di iOS 11 - hapus dari aplikasi untuk diperbaiki
sumber
Anda dapat menambahkan kode di bawah ini ketika tampilan viewController dimuat, seperti aplikasi viewDidAppear. Tidak hanya: didFinishLaunchingWithOptions:
sumber