应用程序进入后台时隐藏键盘:屏幕截图问题

3
当Home键被按下时,我希望隐藏键盘并将视图恢复到正常状态,这样当应用程序再次启动/前台化时,没有文本字段被选中,并且键盘是隐藏的。
我的应用程序委托有这个方法的实现:
- (void)applicationDidEnterBackground:(UIApplication *)application {
    [tabBarController.view endEditing:YES];
}

键盘确实被移除了,但我不明白的是:苹果的文档说,在方法返回之后会拍摄应用程序的快照。然而,这会导致键盘下滑动画出现问题。有时,当应用程序再次启动时,它会短暂地显示键盘下滑了一半。我假设屏幕截图是在动画完成之前拍摄的。
为了解决这个问题,我该怎么办?在applicationDidEnterBackground:方法中引入一个短定时器吗?我想知道是否有更“简洁”的解决方案。

你尝试在 applicationWillResignActive: 中做那件事了吗? - Nickolay Olshevsky
是的,同样的问题。我已经依次在applicationDidEnterBackground、applicationDidResignActive和applicationWillTerminate中放置了endEditing。我还尝试在其后放置[NSThread sleepForTimeInterval:0.5] - 这会导致应用程序再次启动时显示黑屏,而不是半成品动画。还不确定哪个更好... - Daniel Schneller
1个回答

0

我没有尝试过,但在您放弃键盘之前关闭动画如何:

- (void)applicationDidEnterBackground:(UIApplication *)application {
    [UIView setAnimationsEnabled:NO];
     [tabBarController.view endEditing:YES];
}

如果这个工作的话,你需要在applicationWillEnterForeground中将它们重新打开


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接