我有以下问题:我有一个表格表,模态上有一个UITextField。点击UITextField时,大约需要3秒才能显示键盘,这非常慢。有谁知道问题可能是什么?
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
if (textField == self.licenseTextField) {
[self.licenseTextField resignFirstResponder];
} return YES;
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ [self.licenseTextField resignFirstResponder]; }
-(BOOL)disablesAutomaticKeyboardDismissal{ return NO; }
答案 0 :(得分:1)
除非必须显示键盘,否则iOS不会为键盘释放内存。有一些解决方法,不是很精致但功能齐全。
这是我使用的解决方案。在显示应用程序的实际内容之前,我在应用程序启动时预加载键盘。启动过程需要更长的时间,但是当我稍后显示键盘时,至少我的界面不会冻结。
//更新:Apple刚刚使用下面显示的方法拒绝了我的应用程序,因为它有时会启动到iPad模拟器(不是设备!)上的黑屏,上帝知道原因。
AppDelegate.m:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];
UITextField *lagFreeField = [[UITextField alloc] init];
[self.window addSubview:lagFreeField];
[lagFreeField becomeFirstResponder];
[lagFreeField resignFirstResponder];
[lagFreeField removeFromSuperview];
return YES;
}
- (void)keyboardDidShow:(NSNotification *) notification {
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidShowNotification object:nil];
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.2 * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil];
} else {
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil];
}
self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
[self.window makeKeyAndVisible];
});
}
调度修复了我的一些动画问题,也许你不需要它。 More information on the problem and possible solutions.
答案 1 :(得分:0)
在源代码中应用任何hack之前,请在没有调试模式且没有插入的情况下测试您的应用程序。很多iOS版本都有此问题。在真实环境中测试应用程序时,将无法加载。 感谢