7

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

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

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

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

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

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

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

4

4 回答 4

7

您可以使用下面的方法

[[[UIApplication sharedApplication] keyWindow] endEditing:YES]
于 2013-04-26T08:34:34.863 回答
4

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

于 2013-04-26T08:26:28.263 回答
0

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

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

于 2013-04-26T08:29:02.537 回答
0

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

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
  [self.view endEditing:YES]; // added this in for case when keyboard was already on screen
  [self editStartDate:textField];
  return NO;
}
于 2013-04-26T09:06:39.780 回答