进入前景的iPhone应用程序将视图移回原点,键盘仍然可见

时间:2010-12-08 12:33:45

标签: iphone ios uitextfield uiapplicationdelegate

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

发生了什么事?当应用程序返回到前台时,如何使视图保持放置或隐藏键盘?

更新:

- 在新的iOS5上对此进行了哪些更改?

2 个答案:

答案 0 :(得分:0)

您可以尝试在app delegate中的applicationDidEnterBackground中执行某些操作,例如

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

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

NSLog就在那里,你知道传递给if语句的是什么。

答案 1 :(得分:0)

我有下一个解决方案:

在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];
    }

}

看起来像“热修复”)