好吧,这个问题让我疯了 .
触摸 UITextField
后,键盘弹出约需3-4秒 . 这仅在应用程序启动后第一次弹出键盘时发生,之后动画立即启动 .
起初我以为这是加载太多图片或我的 UITableView
的问题,但我刚刚创建了一个只有 UITextField
的全新项目,我仍然遇到这个问题 . 我正在使用iOS 5,Xcode ver 4.2,并在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
在 viewDidAppear
中成为/辞职第一响应者,但这并不能完全解决问题 - 它只会在视图加载时加载延迟 . 如果我在视图加载时立即点击 textField
,我仍然会遇到问题;如果我在视图加载后等待3-4秒才触摸textField,我不会得到延迟 .
11 回答
您可以通过将此添加到didFinishLaunchingWithOptions中来使用Vadoff的Swift解决方案:
它在iOS 8中适用于我 .
块中的代码添加到主队列并异步运行 . (不要锁定主线程)
见this answer . 他们建议UIResponder+KeyboardCache . 它简单而且棒极了 . 在iOS 7上测试过 .
通过在UITextField上使用系统字体而不是自定义字体来解决UIViewController很难呈现的相关问题 . 也许使用系统字体也可能适用于此问题?
这个错误似乎在iOS 9.2.1中得到修复 . 自从升级我的设备后,在我的设备连接到计算机时,在点击文本字段和出现键盘之间不再有延迟 .
这是一个已知的问题 .
预装键盘似乎很有希望 . 检查Preloading the UIKeyboard.
一些额外的阅读材料:
Initial iPhone virtual keyboard display is slow for a UITextField. Is this hack around required?
UITextField keyboard blocks runloop while loading?
http://www.iphonedevsdk.com/forum/iphone-sdk-development/12114-uitextfield-loooong-delay-when-first-tapped.html
此选定答案会导致iOS 11上的BAD_EXC崩溃 - 从应用中移除以进行修复
在实施任何异国黑客以解决此问题之前,请尝试以下操作:停止调试会话,从多任务关闭应用程序,从计算机上拔下您的设备并通过点击其图标正常运行应用程序 . 我已经看到至少两种情况,其中延迟仅在设备插入时发生 .
所以问题不仅限于我之前想到的第一次安装,而是每次启动应用程序时都会发生 . 这是我完全解决问题的解决方案 .
是的,我在最新的iPhone 4s上也延迟了几秒钟 . 不要惊慌 . 出于某些原因,它只在第一次从Debug中的Xcode加载应用程序时发生 . 当我发布时,我没有得到延迟 . 把它忘了吧...
您可以在viewController的视图加载时添加以下代码,例如viewDidAppear.Not只是application:didFinishLaunchingWithOptions: