【问题标题】:resignFirstResponder Don't work?resignFirstResponder 不工作?
【发布时间】:2011-07-28 02:52:38
【问题描述】:

我尝试在 iPad 上隐藏键盘,但我不知道为什么 resignFirstResponder 不起作用。 但是popToRoot 运行良好。

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{
    NSString *desc = [NSString stringWithFormat:@"%@",[descTF text]];
    [textField resignFirstResponder];
    [self.navigationController popToRootViewControllerAnimated:YES];


    return YES;
}

那么你能指导我该怎么做吗??

【问题讨论】:

  • 我尝试输入 - (BOOL)disablesAutomaticKeyboardDismissal { return NO; } 在我的代码下 - (BOOL)textFieldShouldReturn:(UITextField *)textField{...} 但键盘仍然没有隐藏。
  • 在我发布的链接中,问题可能是来自 Apple 的错误。

标签: objective-c ios ipad resignfirstresponder


【解决方案1】:

此字段是否在 UIModalPresentationFormSheet 内?如果是这样,这是一个已知问题,在视图控制器被解除之前,您无法以编程方式解除键盘。

更新:根据 Apple 开发者论坛的 this thread,可能的解决方法是从实现 disablesAutomaticKeyboardDismissal 方法的导航控制器子类内部呈现工作表视图控件。所以像:

MyViewController *myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
CustomNavigationController *navController = [[CustomNavigationController alloc] initWithRootViewController:myViewController];
theNavigationController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:theNavigationController animated:YES];

【讨论】:

  • 添加了可能的解决方法并链接到 Apple 开发者论坛线程。
【解决方案2】:

要跟进 samvermette 的回答,如果它在 UIModalPresentationFormSheet 内,您现在可以覆盖 disablesAutomaticKeyboardDismissal 方法以获得您想要的行为。将以下方法添加到您的类中,UITextFieldsUITextViews 将响应 resignFirstResponder。

- (BOOL)disablesAutomaticKeyboardDismissal {
    return NO;
}

【讨论】:

  • +1 这确实应该是选择的答案(显然最初选择的答案曾经是正确的)。谢谢顺便说一句。
【解决方案3】:

你不应该有机会发送-resignFirstResponder。您应该做的只是将-endEditing:YES 发送到相关视图。

【讨论】:

    【解决方案4】:

    您是否实施了 UITextFieldDelegate ?如果你已经实现了这个,那么它应该可以工作。

    【讨论】:

    • 我已经添加了 。并链接删除@xib 文件。 T^T 但还是没有隐藏。
    • textField.returnKeyType = UIReturnKeyDone ?
    • errr 你能指导我为“textField.returnKeyType = UIReturnKeyDone”做什么吗???
    【解决方案5】:

    (抱歉……这是我在 StackOverflow 网站上发布此修复程序的第四位……)

    我在使用 XCode 5 和 iOS 7 时遇到了很大的问题,试图隐藏屏幕键盘。

    最终,我找到了一个非常简单的解决方案:我只是禁用了表单中的UITextFields。神奇的是,这足以让屏幕键盘滑开。

    更多详情here

    令人惊讶的是,这甚至适用于模态 UIViewControllers。是的,这也让我感到惊讶!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多