我正在设置一个NOTIFICATION以获取KEYBOARD信息以调整视图,以便所选文本字段不被KEYBOARD覆盖。
@property CGSize keyboard;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:@"UIKeyboardWillShowNotification"
object:nil];
...
}
- (void) keyboardWillShow:(NSNotification *)note
{
NSDictionary *userInfo = [note userInfo];
self.keyboard = [[userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
}
我已经设置了UITextFieldDelegate,所以我可以使用KEYBOARD信息
- (void)textFieldDidBeginEditing:(UITextField *)textField
一切都很完美......
除了第一次。
设置KEYBOARD属性的NOTIFICATION在textFieldDidBeginEditing之后调用,因此第一次没有设置KEYBOARD属性,因此它显示不正确。
之后一切都很好,因为KEYBOARD属性已经设置并且值不会改变。
如何在第一次执行textFieldDidBeginEditing之前获取KEYBOARD信息?
编辑:
确实找到了一些解决方案,它似乎确实有效,但对我来说感觉有点骇人听闻,我仍然想知道是否有办法获取键盘信息。
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.txtField becomeFirstResponder];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self.txtField resignFirstResponder];
}
当它显示和隐藏键盘时,它会在屏幕的最底部短暂闪烁,这是我不喜欢的,但对于不知道寻找它的人来说,它可能不是很明显或不明显。
我必须将becomeFirstResponder和resignFirstResponder分解为不同的方法,因为如果从同一个方法调用它们,则不会调用keyboardWillShow 。
此外,不能将becomeFirstResponder放在viewDidLoad中,因为在这种情况下也不会调用keyboardWillShow 。
如果有人有改进或更好的方法,我很想听听。