【问题标题】:iOS dismiss all keyboard and modal controlsiOS 关闭所有键盘和模式控件
【发布时间】:2012-05-29 09:46:10
【问题描述】:

我正在制作一个基于网络的应用程序,但我偶然发现了一个小难题。我的应用程序连接到服务器,应用程序使用键盘并在按下某些按钮时显示模式视图。这一切都很好,可以按照我的意愿工作。我的问题是当服务器失去连接时,无论是为了维护还是我们失去连接,应用程序都会返回登录屏幕,但键盘或模式视图不会被关闭。我是否必须跟踪这些才能解除它们,或者是否可以发送一些全局命令来解除所有内容。

提前感谢您的帮助

【问题讨论】:

    标签: ios modalviewcontroller uikeyboard


    【解决方案1】:

    至少有几种不同的方法可以关闭键盘: 其中之一应该可以工作:

    [myEditField resignFirstResponder];
    [myEditField endEditing];
    [parentView endEditing];
    

    没有“全局”方式来关闭所有打开的模式视图。您需要专门关闭您使用以下方法打开的任何模式视图:

    [self dismissModalViewControllerAnimated:YES];
    // This can be called either from within the modal view or its parent:
    

    【讨论】:

    • 所以我必须跟踪显示的人并让家长可以说解雇他们?
    • 是的,差不多。没有“全局”命令可以关闭任何/所有模式视图。但是,您可以尝试为此使用通知。例如,父级触发通知,任何收到通知的视图都应自行关闭。那是另一种选择。如果您选择走那条路,请查看 NSNotificationCenter。
    • 我决定走通知路线。非常感谢您的帮助
    【解决方案2】:

    只需使用私有属性来保存当前的模态视图和/或具有焦点的文本字段。然后,当您失去连接时,使用该属性的值(您在模态视图的实例化时设置)关闭当前的。

    【讨论】:

      【解决方案3】:

      在您的视图控制器用户中:

      [self.view endEditing: YES];
      

      这将为您的主视图的所有子视图resignFirstResponder。无需跟踪哪个 textField 是第一响应者。

      【讨论】:

        【解决方案4】:

        我发现了endEditing 和resignFirstResponder 失败的情况。在这些情况下,这对我有用。

        [[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];    
        [self setEditing:NO];
        

        【讨论】:

        • 一直在找这个!
        猜你喜欢
        • 1970-01-01
        • 2011-10-17
        • 2015-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-17
        • 2016-01-16
        • 1970-01-01
        相关资源
        最近更新 更多