【问题标题】:removing keyboard from Screen without calling resignFirstResponder从屏幕上删除键盘而不调用 resignFirstResponder
【发布时间】:2013-04-20 08:32:00
【问题描述】:

我在 UIWindow 上添加了一个自定义视图 (NotifyView),并带有一个关闭按钮(将其从 UIWindow 中删除)。 当 PUSH 通知进入时添加此视图 didReceiveRemoteNotification 有几种情况我可以在任何屏幕上,并且我的键盘通过UITextfield/UITextview UP。 在这个阶段,如果有推送,NotifyView 会添加到键盘后面的UIWindow 上。 我想在收到 PUSH 后退出键盘,这样我可以:

  • 使用NSNotificaitonCenter 发布通知以辞职所有文本字段/文本视图(如果有人是firstResponder)。为此,我必须在所有控制器中保持指向当前活动文本字段/文本视图的活动指针。

  • 在 AppDelegate 中创建一个变量,并将活动的文本字段/文本视图分配给它,并在 PUSH 上和resignFirstResponder 在 PUSH 上。

这两种解决方案都需要更改所有控制器的代码,我正在寻找更通用的东西,例如:

  • 有什么方法可以让我在收到 PUSH 时从屏幕上简单地移除键盘
  • 或者我可以获取应用程序的当前 firstResponder 并明确退出。

这些可能是通用解决方案。

如果有人可以促进这一思考过程或有人对此案有任何直接的解决方案,那将非常有帮助。

【问题讨论】:

标签: iphone ios objective-c ipad ios5


【解决方案1】:

在委托方法中试试这个...

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
  [self.view endEditing:YES]; // added this in for case when keyboard was already on screen
  [self editStartDate:textField];
  return NO;
}

【讨论】:

    【解决方案2】:

    你可以使用下面的方法

    [[[UIApplication sharedApplication] keyWindow] endEditing:YES]
    

    【讨论】:

      【解决方案3】:

      问题在于,当您想重新获得焦点时。

      我已经实现了监听每个文本字段并缓存最新的。在恢复状态之后只辞职(在 push 中),需要重点关注。

      【讨论】:

        【解决方案4】:

        试试这个,对我来说效果很好 [yourView endEditing:YES]

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-01
        • 2016-08-27
        • 1970-01-01
        • 2012-03-06
        • 1970-01-01
        • 2023-04-02
        • 2014-04-26
        相关资源
        最近更新 更多