为什么从模态视图返回时会触发UIKeyboardDidShowNotification / UIKeyboardWillHideNotification?

时间:2014-12-15 12:53:12

标签: ios nsnotificationcenter uikeyboard

我已经实现了滚动功能,其中文本字段不会从键盘隐藏。因此,我正在使用UIKeyboardDidShowNotificationUIKeyboardWillHideNotification进行滚动。对于滚动,我需要知道当前活动的文本字段。这是通过EditingDidBeginEditingDidEnd完成的。

代码在C#中,但没有太大区别:

usernameText.EditingDidBegin += delegate {
    activeTextField = usernameText;
};
usernameText.EditingDidEnd += delegate {
    activeTextField = null;
};

我的应用程序流程如下所示:

  1. 用户启动应用程序,一个文本字段成为第一个响应者。弹出键盘并正确调用UIKeyboardDidShowNotification
  2. 用户按下另一个按钮,另一个视图以模态显示。
  3. 正确调用
  4. UIKeyboardWillHideNotification,并在EditingDidEnd中清除我的有效文本字段。
  5. 从我的模态视图返回UIKeyboardDidShowNotification时会再次调用UIKeyboardWillHideNotification,尽管没有键盘处于活动状态。
  6. UIKeyboardDidShowNotification中,我需要当时为空的活动文本字段,并且我的应用程序崩溃了。现在我使用了空检查,以便应用程序不会崩溃。

    但是,为什么在没有必要时再次发送两个通知?

1 个答案:

答案 0 :(得分:1)

步骤2中的

:"用户按下另一个按钮,另一个视图以模态显示。"在呈现viewController之前隐藏你的键盘