回到前台的 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 应用程序将视图移回其原点,并且键盘仍然可见的主要内容,如果未能解决你的问题,请参考以下文章
iOS 7 状态栏在 iPhone 应用程序中回到 iOS 6 默认样式?