Ios 编辑某些字段后键盘不显示
我们的IOS键盘有一个非常奇怪的问题。我们有两个视图控制器,第一个视图控制器中有两个文本字段,第二个视图控制器中有一个Ios 编辑某些字段后键盘不显示,ios,objective-c,keyboard,Ios,Objective C,Keyboard,我们的IOS键盘有一个非常奇怪的问题。我们有两个视图控制器,第一个视图控制器中有两个文本字段,第二个视图控制器中有一个UISearchbar 如果我们不编辑任何文本字段,我们可以在两个ViewController上的每个文本字段和搜索栏中显示键盘,但是当我们编辑其中一个文本字段和搜索栏时,我们就失去了显示键盘的可能性,即使在启动委托函数shouldBeginEditing时也是如此。。。你有过类似的问题吗??这就像一只隐藏键盘的虫子 当我们关闭两个视图控制器时,键盘又开始工作。当我们检查第一响应
UISearchbar
如果我们不编辑任何文本字段,我们可以在两个ViewController上的每个文本字段和搜索栏中显示键盘,但是当我们编辑其中一个文本字段和搜索栏时,我们就失去了显示键盘的可能性,即使在启动委托函数shouldBeginEditing时也是如此。。。你有过类似的问题吗??这就像一只隐藏键盘的虫子
当我们关闭两个视图控制器时,键盘又开始工作。当我们检查第一响应者时,它为零,窗口如下所示:
2016-05-10 09:27:11.722 Nepcom[1352:1777156]isKeyWindow=1个窗口
级别=0.0帧={0,0},{375667}类=UIWindow 2016-05-10
09:27:11.723 Nepcom[1352:1777156]isKeyWindow=0窗口级别=1.0
frame={0,0},{375667}类=UITextEffectsWindow 2016-05-10
09:27:11.723 Nepcom[1352:1777156]isKeyWindow=0窗口级别=
2100.0框架={0,0},{375,667}}类=UITExtEffectsSwindow
我们不知道该怎么办。
提前谢谢
首先,这可能是因为键盘被更高级别的窗口覆盖(有关更多信息,请参阅windowLevel)。在iOS中,键盘是独立窗口的子视图。该窗口的级别高于应用程序的键窗口,因此它始终显示在前面。如果在重叠位置创建另一个窗口,并使其级别高于键盘窗口的级别,则键盘将被覆盖,因此用户将看不见。您可以通过检查应用程序窗口的相关属性来确认这一点
从
首先,这可能是因为键盘被更高级别的窗口覆盖(有关更多信息,请参阅windowLevel)。在iOS中,键盘是独立窗口的子视图。该窗口的级别高于应用程序的键窗口,因此它始终显示在前面。如果在重叠位置创建另一个窗口,并使其级别高于键盘窗口的级别,则键盘将被覆盖,因此用户将看不见。您可以通过检查应用程序窗口的相关属性来确认这一点
从
只需添加键盘通知方法,并检查是否调用它。。。我们已经观察到了通知,只需添加键盘通知方法,并检查是否调用它。。。我们已经收到了通知,在这种情况下,第一响应者将为零?另一方面,我们没有创建任何其他窗口。。。如果我们不编辑第一个viewcontroller的文本字段的内容,键盘会正确显示您的第一个响应者不应该为零。查看textfield的委托方法以及两个视图控制器视图的框架您的文本输入视图拒绝成为第一响应者。当视图类的-(BOOL)becomeFirstResponder方法返回NO时,可能会发生这种情况。如果由于某些原因重写此方法,请确保在文本输入视图为交互式时,它返回YES。该字段是一个普通的UISearchBar,我没有重写becomeFirstResponder方法。。。正如我所评论的,shouldBeginEditing返回Yes。请在ios 7或8中测试相同的内容。在这种情况下,第一响应者将为零?另一方面,我们没有创建任何其他窗口。。。如果我们不编辑第一个viewcontroller的文本字段的内容,键盘会正确显示您的第一个响应者不应该为零。查看textfield的委托方法以及两个视图控制器视图的框架您的文本输入视图拒绝成为第一响应者。当视图类的-(BOOL)becomeFirstResponder方法返回NO时,可能会发生这种情况。如果由于某些原因重写此方法,请确保在文本输入视图为交互式时,它返回YES。该字段是一个普通的UISearchBar,我没有重写becomeFirstResponder方法。。。正如我所评论的,shouldBeginEditing返回Yes。请在ios 7或ios 8中进行测试