UITextField - 当应用程序来自后台时,键盘不会隐藏

时间:2014-10-16 08:22:10

标签: ios background uitextfield

在我的iOS应用中,我在视图的底部有UITextfield。因此,当用户开始输入文本时,我将向上滑动视图,以便用户可以看到他们正在键入的内容。
输入文本时,视图向上移动,然后按主页按钮,应用程序进入后台 现在点击应用程序的图标,它将应用程序带到前台
现在我注意到视图返回到原始位置(X = 0,Y = 0)但键盘仍然可见 当应用程序到达前台时如何隐藏键盘。

我试图在viewWillAppear和viewWillDisappear中隐藏键盘。它不起作用。

3 个答案:

答案 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];
}

输出:

enter image description here

答案 1 :(得分:1)

最好的方法是在AppDelegate上的applicationWillResignActive中放置窗口?.endEditing(true):

func applicationWillResignActive(_ application: UIApplication) {
window?.endEditing(true)}

希望这能帮到你

答案 2 :(得分:0)

  • 在您的App Delegate中有一个弱的UIView *参考。
  • 将其设置为您显示的任何文本字段(来自任何视图控制器)。

当应用程序到达前台时,只需调用视图的resignFirstResponder即可关闭键盘。当应用程序转到后台时,此解决方案不关心显示哪个视图控制器。它需要知道的是,是否显示了文本视图,如果是,则将其作为第一响应者重新签名。如果没有显示任何内容,则此变量将为零,并且只是一个无操作。

现在,即使将相同的视图控制器放在前面,用户也只需点击文本视图即可使键盘返回,这是完全可以接受的。