UITextField的初始键盘动画上的超慢滞后/延迟 [英] Super slow lag/delay on initial keyboard animation of UITextField
问题描述
好吧,这个问题一直驱使我坚果。
Alright, this problem has been driving me nuts.
触摸我的 UITextField
后,键盘弹出大约需要3-4秒。这只发生在第一次从应用程序启动时弹出键盘,之后动画立即开始。
It takes roughly 3-4 seconds for the keyboard to pop up after I touch my UITextField
. This only occurs on the first time the keyboard pops up since the app launched, afterwards the animation starts instantly.
一开始我认为这是加载太多图像的问题,或我的 UITableView
,但我刚刚创建了一个全新的项目只有一个 UITextField
,我仍然遇到这个问题。我使用iOS 5,Xcode版本4.2,并在iPhone 4S上运行。
At first I thought it was problem of loading too many images, or my UITableView
, but I just created a brand new project with only a UITextField
, and I still experience this problem. I'm using iOS 5, Xcode ver 4.2, and running on an iPhone 4S.
这是我的代码:
#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
所有应用程序?
现在,我可以让它更好一点的唯一方法是让 textField
成为/ resign第一个响应者在 viewDidAppear
,但这不能完全解决问题 - 它只是加载延迟到视图加载时。如果我在视图加载时立即点击 textField
,我仍然会遇到问题;如果我在触摸textField之后加载视图后等待3-4秒,我就不会得到延迟。
Right now, the only way I can make it somewhat better is by having textField
become/resign first responder in viewDidAppear
, but that doesn't solve the problem entirely - it just loads the delay onto when the view loads instead. If I click on textField
immediately when the view loads, I still get the problem; if I wait 3-4 seconds after the view loads before touching the textField, I don't get the delay.
推荐答案
问题不仅限于第一次安装,因为我以前想,但发生每次应用程序启动时。这里是我的解决方案,以完全解决问题。
So the problem is NOT just limited to the first install as I had previously thought, but happens every time the app is launched. Here's my solution that solves the issue completely.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Preloads keyboard so there's no lag on initial keyboard appearance.
UITextField *lagFreeField = [[UITextField alloc] init];
[self.window addSubview:lagFreeField];
[lagFreeField becomeFirstResponder];
[lagFreeField resignFirstResponder];
[lagFreeField removeFromSuperview];
}
这篇关于UITextField的初始键盘动画上的超慢滞后/延迟的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!