键盘弹出的时间
第一种方法
有人说会有延迟时间, 但是如果你用强制布局之后就不会有延迟了
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { [self.view endEditing:YES]; } - (void)registerForKeyboardNotifications { // 使用NSNotificationCenter 键盘显示 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardWillShowNotification object:nil]; // 使用NSNotificationCenter 键盘隐藏 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillBeHidden:) name:UIKeyboardWillHideNotification object:nil]; } // 实现当键盘出现的时候计算键盘的高度大小。用于输入框显示位置 - (void)keyboardWasShown:(NSNotification*)aNotification { NSDictionary* info = [aNotification userInfo]; //kbSize键盘尺寸 (有width, height) CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;// 键盘的高度 self.bottomLayout.constant = kbSize.height; [self.view layoutIfNeeded]; } //实现当键盘出现的时候计算键盘的高度大小。用于输入框显示位置 - (void)keyboardWillBeHidden:(NSNotification*)aNotification { NSDictionary* info = [aNotification userInfo]; // kbSize键盘尺寸 (有width, height) CGSize kbSize = [[info objectForKey:UIKeyboardAnimationDurationUserInfoKey] CGRectValue].size;// 键盘的高度 self.bottomLayout.constant = kbSize.height; [self.view layoutIfNeeded]; }
第二种方法
不过这种方法有一个弊病,就是你的所有值都是死的, 不是动态的, 所以个人推荐第一种
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { [self.view endEditing:YES]; } - (void)textViewDidBeginEditing:(UITextView *)textView { NSLog(@"textViewDidBeginEditing" ); [UIView beginAnimations:@"ResizeForKeyboard" context:nil]; self.bottomLayout.constant = 258; [self.view layoutIfNeeded]; } - (void)textViewDidEndEditing:(UITextView *)textView { self.bottomLayout.constant = 0; [self.view layoutIfNeeded]; }
谁知道在第二种方法怎么计算键盘的高度, 麻烦再下面评论, 大家一起学习。。。。。。