1.键盘出现消失时,参考的view变化的代码:
- (void)viewDidLoad {
superviewDidLoad;
// Do any additional setup after loading the view.
__weaktypeof(self) weakSelf =self;
_textField= UITextField new;
_textField.backgroundColor = UIColor redColor;
self.view addSubview:_textField;
[_textField mas_makeConstraints:^(MASConstraintMaker *make) {
//left,right,centerx,y不能共存只能有其二
make.left.mas_equalTo(20);
//make.right.mas_equalTo(-60);
make.centerX.equalTo(weakSelf.view);
make.height.mas_equalTo(40);
make.bottom.mas_equalTo(0);
}];
//注册键盘通知
\[NSNotificationCenter defaultCenter addObserver:selfselector:@selector(keyboardWillChangeFrameNotification:) name:UIKeyboardWillChangeFrameNotification object:nil];
\[NSNotificationCenter defaultCenter addObserver:selfselector:@selector(keyboardWillHideNotification:) name:UIKeyboardWillHideNotification object:nil];
}
- (void)keyboardWillChangeFrameNotification:(NSNotification *)notification {
//获取键盘基本信息(动画时长与键盘高度)
NSDictionary *userInfo = notification userInfo;
CGRect rect = userInfo\[UIKeyboardFrameBeginUserInfoKey CGRectValue];
CGFloat keyboardHeight= CGRectGetHeight(rect);
CGFloat keyboardDuration = userInfo\[UIKeyboardAnimationDurationUserInfoKey doubleValue];
//修改下边距约束
[_textField mas_updateConstraints:^(MASConstraintMaker *make) {
make.bottom.mas_equalTo(-keyboardHeight);
}];
//更新约束
[UIView animateWithDuration:keyboardDuration animations:^{
self.view layoutIfNeeded;
}];
}
- (void)keyboardWillHideNotification:(NSNotification *)notification {
//获得键盘动画时长
NSDictionary *userInfo= notification userInfo;
CGFloat keyboardDuration = userInfo\[UIKeyboardAnimationDurationUserInfoKey doubleValue];
//修改为以前的约束(距下边距0)
[_textField mas_updateConstraints:^(MASConstraintMaker *make) {
make.bottom.mas_equalTo(0);
}];
//更新约束
[UIView animateWithDuration:keyboardDuration animations:^{
self.view layoutIfNeeded;
}];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
supertouchesBegan:touches withEvent:event;
self.view endEditing:YES;
}