监控键盘弹起与收回的应用

像微信聊天的时候下面会有一个输入框,点击然后键盘把输入框顶起,取消第一响应,键盘收起输入框会回到原来位置。那么我们怎么更简单的操作呢?

我一般的做法是监控键盘的frame变化 然后判断键盘是弹出还是收起,进行输入框位置变化的操作。不多说直接上关键代码

第一步:注册通知,监听键盘frame的变化

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrameNotification:) name:UIKeyboardWillChangeFrameNotification object:nil];

第二步:实现监听到键盘frame变化的方法

- (void)keyboardWillChangeFrameNotification:(NSNotification *)notification{
    // 键盘的frame
    CGRect keyboardRect =         [notification.userInfo[UIKeyboardFrameEndUserInfoKey]  CGRectValue]; 
    // 键盘变化的动画时间
    CGFloat keyboardAnimationDuration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] floatValue];
    // 距离坐标点的目标y值
    CGFloat keyboardY = CGRectGetMinY(keyboardRect);
    [UIView animateWithDuration:keyboardAnimationDuration
                      delay:0
                    options:UIViewAnimationOptionCurveEaseInOut
                 animations:^{
                     if (keyboardY==SCREENHEIGHT) {
                         // 键盘目标y值是屏幕的高 说明是收起

                           设置操作view的y值 为初始y值

                     }else{
                           // 键盘弹出 
                           操作view的之前的y值 减去键盘的高度,就是要达到的y值,此处可以有多种计算方式。


                     }
                 } completion:^(BOOL finished) {
                 }];

}

第三步:注意不要忘记移除键盘的监听 防止有时会出现混乱的问题。

 [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillChangeFrameNotification object:nil];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值