我有一个带有自定义 View 的 xib 文件,其中有许多文本字段 subview 。我已将每个文本字段上的委托(delegate)设置为文件所有者,并成功地能够使用文本字段委托(delegate)方法。但不幸的是键盘通知方法keyboardWillShow: 和keyboardWillHide: 根本没有被调用。
我在textfieldShouldBeginEditing处添加了观察者,并在textFieldDidEndEditing处删除了观察者。
这是我的代码片段:
添加观察者
-(void) textFieldShouldBeginEditing : (UITextField *) textField{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
}
移除观察者
-(void) textFieldDidEndEditing : (UITextField *) textField{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
}
//通知方法
- (void)keyboardWillShow:(NSNotification *)notification
{
NSLog(@"Here");
}
- (void)keyboardWillHide:(NSNotification *)notification
{
NSLog(@"There");
}
//其中任何一个keyboardwillShow和keyboardWillHide都不会被调用。
如果有人可以帮助我找出代码问题或我可能遗漏的任何底层问题,那就太好了。
最佳答案
当您通过编辑textView显示键盘时,您正在添加一个观察者。它不会调用,因为键盘已经显示。您应该在 viewWillAppear
上添加观察者并删除 viewWillDisappear
方法。
关于ios - NSNotification keyBoardWillShow 和 KeyboardWillHide 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42029826/