ios - NSNotification keyBoardWillShow 和 KeyboardWillHide 未被调用

标签 ios objective-c uikeyboard nsnotification

我有一个带有自定义 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/

相关文章:

ios - 如何将 .bundle 添加到 Xcode 4 源代码管理?

ios - SoundCloud iOS SDK 过时了吗?

ios - Monotouch Three20 应用程序启动器或绑定(bind)

objective-c - Objective-C 在 iPhone 上有垃圾收集器吗?

objective-c - UITextField显示异常

iphone - iPhone 应用首次加载查询时的动画

objective-c - 警告 : "format not a string literal and no format arguments"

ios - 如何在后台线程调用API?

ios - 从另一个 View Controller 关闭键盘

ios - 点击另一个 UITextField 后自动禁用键盘