【问题标题】:How to hide keyboard after a push on an UINavigationBar back button on ios如何在 ios 上按下 UINavigationBar 后退按钮后隐藏键盘
【发布时间】:2012-04-30 23:44:37
【问题描述】:

我的键盘出现一个 textView,我想在用户按下导航栏上的后退按钮时隐藏它。

我试过这个:

-(void)viewWillDisappear:(BOOL)animated{

    [myTextView resignFirstResponder];
}

还有这个:

-(void)viewDidDisappear:(BOOL)animated{

    [myTextView resignFirstResponder];
}

但它不起作用,我该怎么做?

编辑:

我在这里找到了解决方案:

iPad keyboard will not dismiss if modal ViewController presentation style is UIModalPresentationFormSheet

【问题讨论】:

  • 确保 IBoutlets 被正确绑定并且 viewDid/WillDisappear 通过放置 NSLog 语句被调用
  • 您甚至不必自己辞去急救人员的职务。当视图离开屏幕时,它应该自动退出并让键盘消失。您可以通过使用“Master-Detail Application”模板为 iphone 创建一个新项目来测试此行为。打开情节提要并转到详细信息屏幕。将UITextField 添加到视图并运行应用程序。当您在该字段中点击时,键盘会出现,当您点击导航栏上的后退按钮时,它会消失。
  • 是真的但是,但是当我按下一个按钮时,会出现一个带有 UINavigationController 的模态表单,我按下另一个在另一个视图中导航的按钮,我按下一个 textView,键盘出现了,我回到之前的viewController,键盘仍然存在。
  • 我在这里找到了解决方案:stackoverflow.com/questions/3372333/…

标签: ios keyboard back-button


【解决方案1】:

把这个放到buttonPress方法中-

[self.view.window endEditing:YES];

编辑 - 这还可以让您在按下“返回”按钮时获取正在编辑的文本内容

【讨论】:

  • 为此,您必须覆盖默认的左侧导航栏按钮项
  • 我知道——虽然很简单
【解决方案2】:

结合以上答案并检查后退按钮将由此完成

- (void)viewWillDisappear:(BOOL)animated{
if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) {
    // back button was pressed.  We know this is true because self is no longer
    // in the navigation stack.
    [self.view.window endEditing:YES];
}

[super viewWillDisappear:animated];

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2014-11-17
    相关资源
    最近更新 更多