Vad*_*off 169 keyboard cocoa-touch objective-c uitextfield ios
好吧,这个问题让我疯了.
触摸后,键盘弹出约需3-4秒UITextField.这仅在应用程序启动后第一次弹出键盘时发生,之后动画立即启动.
起初我认为这是装载太多图像的问题,或者是我的UITableView,但我刚刚创建了一个只有a的全新项目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
Run Code Online (Sandbox Code Playgroud)
这是所有应用程序的常见问题吗?
现在,我可以做得更好的唯一方法是textField成为/辞职第一响应者viewDidAppear,但这并不能完全解决问题 - 它只是在视图加载时加载延迟.如果我textField在视图加载时立即点击,我仍然会遇到问题; 如果我在视图加载后等待3-4秒才触摸textField,我不会得到延迟.
Ash*_*Ash 285
在实施任何异国黑客以解决此问题之前,请尝试以下操作:停止调试会话,从多任务关闭应用程序,从计算机上拔下您的设备并通过点击其图标正常运行应用程序.我已经看到至少两种情况,其中延迟仅在设备插入时发生.
Vad*_*off 148
所以问题不仅限于我之前想到的第一次安装,而是每次启动应用程序时都会发生.这是我完全解决问题的解决方案.
- (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];
}
Run Code Online (Sandbox Code Playgroud)
Sma*_*ess 27
是的,我也在最新的iPhone 4s上延迟了几秒钟.不要惊慌.出于某些原因,它只在第一次从Debug中的Xcode加载应用程序时发生.当我发布时,我没有得到延迟.把它忘了吧...
Rok*_*arc 20
这是一个已知的问题.
预装键盘似乎很有希望.检查预加载UIKeyboard.
一些额外的阅读材料:
UITextField的初始iPhone虚拟键盘显示速度很慢.这需要破解吗?
Gre*_*reg 17
您可以在Swift中使用Vadoff的解决方案,将其添加到didFinishLaunchingWithOptions中:
// Preloads keyboard so there's no lag on initial keyboard appearance.
let lagFreeField: UITextField = UITextField()
self.window?.addSubview(lagFreeField)
lagFreeField.becomeFirstResponder()
lagFreeField.resignFirstResponder()
lagFreeField.removeFromSuperview()
Run Code Online (Sandbox Code Playgroud)
它在iOS 8中适用于我.
块中的代码添加到主队列并异步运行.(不要锁定主线程)
dispatch_async(dispatch_get_main_queue(), ^(void){
[textField becomeFirstResponder];
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36040 次 |
| 最近记录: |