iOS -键盘显示与隐藏

来源:互联网 发布:vb安装教程 编辑:程序博客网 时间:2024/04/29 00:58

目前我所接触到的键盘处理方法有两种,第一种是通过约束,第二种是通过transform。

 // 监听键盘通知 -(void)viewDidLoad{    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];    }
<pre name="code" class="objc"> - (void)dealloc{    [[NSNotificationCenter defaultCenter] removeObserver:self];}

 #pragma mark - 键盘处理- (void)keyboardWillShow:(NSNotification *)note {    // 取出键盘最终的frame    CGRect rect = [note.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];    // 取出键盘弹出需要花费的时间    double duration = [note.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];    // 修改约束    self.bottomSpacing.constant = rect.size.height;    [UIView animateWithDuration:duration animations:^{        [self.view layoutIfNeeded];    }];}- (void)keyboardWillHide:(NSNotification *)note {    // 取出键盘弹出需要花费的时间    double duration = [note.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];    // 修改约束    self.bottomSpacing.constant = 0;    [UIView animateWithDuration:duration animations:^{        [self.view layoutIfNeeded];    }];}

上面是第一种方法,简单来说就是通过底部约束来达到这样一个效果。

 // 监听键盘通知 -(void)viewDidLoad{  // 监听键盘通知    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];    }   - (void)dealloc{    [[NSNotificationCenter defaultCenter] removeObserver:self];}#pragma mark - 键盘处理- (void)keyboardWillChangeFrame:(NSNotification *)note {    // 取出键盘最终的frame    CGRect rect = [note.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];    // 取出键盘弹出需要花费的时间    double duration = [note.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];    // 修改transform    [UIView animateWithDuration:duration animations:^{        CGFloat ty = [UIScreen mainScreen].bounds.size.height - rect.origin.y;        self.view.transform = CGAffineTransformMakeTranslation(0, - ty);    }];}
第二种方法就是通过transform将整个屏幕的view向上移动或向下移动一个键盘的高度。

(如果有新方法欢迎回帖

0 0