我目前正在开发一个带有注册视图的 iPhone 4 应用程序。用户可以专注于 UITextField,我有代码可以向上移动视图以防止键盘覆盖文本字段。但是,如果应用程序在后台运行并再次回到前台,则键盘仍处于打开状态,文本字段仍处于焦点状态,但视图现在已向下移回其原始状态。这覆盖了文本字段。
这是怎么回事?当应用程序重新回到前台时,如何使视图保持不变或隐藏键盘?
更新:
- 在新的 iOS5 上有什么变化吗?
我目前正在开发一个带有注册视图的 iPhone 4 应用程序。用户可以专注于 UITextField,我有代码可以向上移动视图以防止键盘覆盖文本字段。但是,如果应用程序在后台运行并再次回到前台,则键盘仍处于打开状态,文本字段仍处于焦点状态,但视图现在已向下移回其原始状态。这覆盖了文本字段。
这是怎么回事?当应用程序重新回到前台时,如何使视图保持不变或隐藏键盘?
更新:
- 在新的 iOS5 上有什么变化吗?
您可以尝试在应用程序委托中的 applicationDidEnterBackground 中执行某些操作,例如
NSLog(@"%@", [self.viewController.YOURTEXTFIELD isFirstResponder]);
if ([self.viewController.YOURTEXTFIELD isFirstResponder]) {
[self.viewController.YOURTEXTFIELD resignFirstResponder];
}
"isFirstResponder" 检查当前视图中是否正在使用键盘,如果是则返回 YES,否则返回 NO。
NSLog 的存在只是为了让您知道传递给 if 语句的内容。
I've next solution:
In AppDelegate
- (void)applicationDidBecomeActive:(UIApplication *)application
{
// 1. get access to ViewController which is on top
// In my case, I have navigation controller in root
UIViewController* current_controller = [self.rootNavController.viewControllers lastObject];
// 2. loop all uitextfield.
for (UITextField* o_txt in [current_controller.view subviews]) {
[o_txt resignFirstResponder];
}
}
Look's like "hot fix" )