在我的iOS应用中,我在视图的底部有UITextfield。因此,当用户开始输入文本时,我将向上滑动视图,以便用户可以看到他们正在键入的内容。
输入文本时,视图向上移动,然后按主页按钮,应用程序进入后台
现在点击应用程序的图标,它将应用程序带到前台
现在我注意到视图返回到原始位置(X = 0,Y = 0)但键盘仍然可见
当应用程序到达前台时如何隐藏键盘。
我试图在viewWillAppear和viewWillDisappear中隐藏键盘。它不起作用。
答案 0 :(得分:2)
-(void)applicationDidEnterBackground:(UIApplication *)application
{
[self.window endEditing:YES];
}
**********或************
当你来自后台时,你必须打电话通知。当你从背景进入前景然后调用这个appdelegate方法。
- (void)applicationWillEnterForeground:(UIApplication *)application
点击下面的通知。
- (void)applicationWillEnterForeground:(UIApplication *)application
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"HIDE" object:self];
}
在viewcontroller中添加通知,如下所示
-(IBAction)HideKeyBard:(NSNotification *)noty
{
[txt resignFirstResponder];
}
- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(HideKeyBard:) name:@"HIDE" object:nil];
}
输出:
答案 1 :(得分:1)
最好的方法是在AppDelegate上的applicationWillResignActive中放置窗口?.endEditing(true):
func applicationWillResignActive(_ application: UIApplication) {
window?.endEditing(true)}
希望这能帮到你
答案 2 :(得分:0)
当应用程序到达前台时,只需调用视图的resignFirstResponder即可关闭键盘。当应用程序转到后台时,此解决方案不关心显示哪个视图控制器。它需要知道的是,是否显示了文本视图,如果是,则将其作为第一响应者重新签名。如果没有显示任何内容,则此变量将为零,并且只是一个无操作。
现在,即使将相同的视图控制器放在前面,用户也只需点击文本视图即可使键盘返回,这是完全可以接受的。