您的位置:首页 > 其它

第11月第31天 keyboardwillshow CGAffineTransformMakeTranslation

2017-08-31 11:30 441 查看
1.

- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}

- (void)registerNotification {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showKeyboard:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self  selector:@selector(hideKeyboard:) name:UIKeyboardWillHideNotification object:nil];
}

#pragma mark - keyboard
- (void)showKeyboard:(NSNotification *)noti {
NSDictionary *info=[noti userInfo];

NSTimeInterval duration = [info[UIKeyboardAnimationDurationUserInfoKey] doubleValue];
UIViewAnimationOptions options = [info[UIKeyboardAnimationCurveUserInfoKey] unsignedIntegerValue] << 16;

CGRect keyboardRect = [info[UIKeyboardFrameEndUserInfoKey] CGRectValue];
CGFloat keyboardHeight = MIN(CGRectGetWidth(keyboardRect), CGRectGetHeight(keyboardRect));

[UIView animateWithDuration:duration delay:0 options:options animations:^{
CGFloat compareH = self.tableView.contentSize.height -(self.view.height - 45 - 64 - keyboardHeight);
if (compareH >  0) {
if (compareH < keyboardHeight) {
self.tableView.transform = CGAffineTransformMakeTranslation(0, -compareH);
} else {
self.tableView.transform = CGAffineTransformMakeTranslation(0, -keyboardHeight);
}
}

self.bottomView.transform = CGAffineTransformMakeTranslation(0, -keyboardHeight);

} completion:nil];
}

- (void)hideKeyboard:(NSNotification *)noti {

NSDictionary *info=[noti userInfo];

NSTimeInterval duration = [info[UIKeyboardAnimationDurationUserInfoKey] doubleValue];
UIViewAnimationOptions options = [info[UIKeyboardAnimationCurveUserInfoKey] unsignedIntegerValue] << 16;

[UIView animateWithDuration:duration delay:0 options:options animations:^{

self.tableView.transform = CGAffineTransformIdentity;
self.bottomView.transform = CGAffineTransformIdentity;

} completion:nil];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: