回到前台的 iPhone 应用程序将视图移回其原点,并且键盘仍然可见

Posted

技术标签:

【中文标题】回到前台的 iPhone 应用程序将视图移回其原点,并且键盘仍然可见【英文标题】:iPhone app entering back into foreground shifts the view back to its origins and keyboard is still visible 【发布时间】:2010-12-08 12:33:44 【问题描述】:

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

发生了什么事?当应用重新回到前台时,如何让视图保持不动或隐藏键盘?

更新:

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

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

【参考方案2】:

我有下一个解决方案:

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


看起来像“热修复”)

【讨论】:

以上是关于回到前台的 iPhone 应用程序将视图移回其原点,并且键盘仍然可见的主要内容,如果未能解决你的问题,请参考以下文章

斯威夫特如何将我的图像移回中间后?或将其旋转回原点位置

Swift:当应用程序最小化时视图位置重置,然后回到前台

UIView.animate 和完成问题

iOS 7 状态栏在 iPhone 应用程序中回到 iOS 6 默认样式?

iOS 7 状态栏在 iPhone 应用程序中回到 iOS 6 默认样式?

iOS 7 状态栏在 iPhone 应用程序中回到 iOS 6 默认样式?