1

我目前正在开发一个带有注册视图的 iPhone 4 应用程序。用户可以专注于 UITextField,我有代码可以向上移动视图以防止键盘覆盖文本字段。但是,如果应用程序在后台运行并再次回到前台,则键盘仍处于打开状态,文本字段仍处于焦点状态,但视图现在已向下移回其原始状态。这覆盖了文本字段。

这是怎么回事?当应用程序重新回到前台时,如何使视图保持不变或隐藏键盘?

更新:

- 在新的 iOS5 上有什么变化吗?

4

2 回答 2

0

您可以尝试在应用程序委托中的 applicationDidEnterBackground 中执行某些操作,例如

NSLog(@"%@", [self.viewController.YOURTEXTFIELD isFirstResponder]);
if ([self.viewController.YOURTEXTFIELD isFirstResponder]) {
    [self.viewController.YOURTEXTFIELD resignFirstResponder];
}

"isFirstResponder" 检查当前视图中是否正在使用键盘,如果是则返回 YES,否则返回 NO。

NSLog 的存在只是为了让您知道传递给 if 语句的内容。

于 2011-04-25T07:37:38.227 回答
0

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" )

于 2013-03-21T10:44:27.007 回答