所以我有一个奇怪的问题。当用户继续使用我的应用程序中的新屏幕而不关闭键盘时,然后返回上一个屏幕,锁定他们的手机然后将其解锁,我会收到keyboardWillShow
通知。
当他们返回原始屏幕时,我没有收到keyboardWillShow
通知,当他们继续进入新屏幕时,我会收到keyboardDidHide
通知,表示系统知道键盘是隐藏的。如果他们手动关闭键盘然后按照上述步骤操作,那么当我解锁手机时,我无法获得keyboardWillShowNotification
。
主要问题是我隐藏了didHide
通知中的工具栏,并在willShow
通知中取消隐藏它。因此,当我重新打开屏幕并获得willShow
通知时,工具栏显示在屏幕底部,没有键盘。我尝试在endEditing
textField
上调用viewWillDissappear
就像我在回调中那样在工具栏上点击完成,但这仍然会导致它显示。
那么,有没有办法过滤掉keyboardWillShowNotifications
,或者有什么根本原因导致我在原始步骤后锁定并解锁手机时获得keyboardWillShowNotification
的原因?
编辑:即使屏幕上没有可见的键盘,我也会收到keyboardDidShow
的来电。
编辑2:使用通知中提供的userInfo字典,我发现了一些有趣的东西:
当我收到keyboardDidShow
通知并且键盘正在显示时,它的框架为(0,308; 320,260)作为其结束帧。当它实际上没有显示键盘时,它有一个(0,524,320,44)的框架,它看起来与工具栏的框架相同。我可以使用这些框架来区分好的和坏的通知。