在iOS 7上的viewDidDisappear之后,键盘不会消失

Bas*_*ass 10 uikeyboard ios ios7

在我们的应用程序中,有一种情况是用户在文本框中输入内容然后按后退按钮返回主屏幕.

如果我们在iOS 7上运行它,键盘不会消失,它只会停留在那里.用户仍然可以浏览应用程序,但所有文本字段都被禁用,这意味着您无法在任何地方输入文本.用户唯一的选择就是杀死应用并重新开始.

我们尝试添加resignFirstResponder消息,但这没有任何帮助.

涉及的代码很多,我们正积极致力于解决这个问题.与此同时,是否有人遇到过这个问题,也许还有办法让它消失?

小智 8

当我为iOS 7编译应用程序时,我遇到了和你一样的问题,我做了以下更改:

  1. 确保[textfield resignFirstResponder]在解除viewController之前添加例如:

    [_passwordInput resignFirstResponder];
    [_emailInput resignFirstResponder];
    [self performSegueWithIdentifier:@"forgotPassword" sender:self];
    
    Run Code Online (Sandbox Code Playgroud)
  2. 只是可以肯定,键盘消失添加[textfield resignFirstResponder]viewWillDisappear例如:

    - (void) viewWillDisappear:(BOOL)animated
    {
       [_passwordInput resignFirstResponder];
       [_emailInput resignFirstResponder];
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 如果你的viewController是使用UIModalPresentationFormSheet添加到你的viewController,只是为了确保文本字段将响应resignFirstResponder:

    - (BOOL)disablesAutomaticKeyboardDismissal
    {
       return NO;
    }
    
    Run Code Online (Sandbox Code Playgroud)

在您的情况下,覆盖后退按钮操作或只是用于viewWillDisappear检查用户何时按下后退按钮,然后resignFirstResponder[super viewWillDisappear]此之前调用:

-(void) viewWillDisappear:(BOOL)animated 
{
   [_passwordInput resignFirstResponder];
   [_emailInput resignFirstResponder];
   [super viewWillDisappear:animated];
}
Run Code Online (Sandbox Code Playgroud)

  • 似乎在iOS 8.0中被破坏 - 如果您使用搜索栏重新进入屏幕,键盘将重新出现. (2认同)