键盘弹出次数>=2问题

关于键盘弹出,发现一个奇怪的问题。app运行成功后第一次弹出键盘时,弹出键盘的监听方法会执行两次,然后再弹出键盘就变成一次了。

代码:

1.在viewWillAppear是注册键盘通知: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardWillShow:) name:UIKeyboardWillShowNotification object:nil];

并且[self.textField resignFirstResponder];//调出键盘

2.在viewWillDisappear里移除键盘通知:[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];

3.注册的通知方法里打印

-(void)keyBoardWillShow:(NSNotification*)noti {

    //第一次走两遍,第二次正常。正常应该只打印一次。
    NSLog(@"Hello,World");
}

当app从进程杀死状态运行在手机上后,进入A界面弹出键盘,会发现“Hello,World”打印了两次。然后再次进入A界面弹出键盘,“Hello,World“打印了一次。正常应该是只执行一次的。

找了好久原因,终于发现问题所在了。如果手机系统键盘设置里只有默认的英文键盘+ emoji键盘,那么keyBoardWillShow 只会执行一次,如果添加了别的键盘,如中文(简体)那么keyBoardWillShow会执行两次。或许是因为第一次显示时默认显示英文键盘,如果有自定义键盘,则显示自定义键盘,再次进入界面时会直接显示自定义键盘。但是目前还不知道让键盘弹出只执行一次的方法。 如果哪位大佬 知道具体原因,麻烦告知。

你可能感兴趣的:(键盘弹出次数>=2问题)