1、添加键盘监听通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];
2、通知实现方法
注意:跟新约束是要在superview操作才行
[self.sendView.superview layoutIfNeeded];
- (void)keyboardWillChangeFrame:(NSNotification *)note{
CGRect frame = [note.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
[self.sendView.superview layoutIfNeeded];//如果其约束还没有生成的时候需要动画的话,就请先强制刷新后才写动画,否则所有没生成的约束会直接跑动画
CGFloat duration = [note.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];
[UIView animateWithDuration:duration animations:^{
if (frame.origin.y == [UIScreen mainScreen].bounds.size.height) {
[self.sendView updateConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(frame.origin.y);
}];
} else {
[self.sendView updateConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(frame.origin.y - 40);
}];
}
[self.sendView.superview layoutIfNeeded];//强制绘制
}];
}