[iOS]监控手机虚拟键盘弹出,消失的通知简单使用

项目中很多时候会遇到弹出的虚拟键盘,遮挡了输入框,或是其他的一些视图,这时候就需要根据键盘的弹出和消失调整视图的坐标,最好的方法就是用系统的通知机制来监控键盘的弹出和消失;

这主要用到了下面的两个通知:

UIKeyboardWillShowNotification//键盘弹出的通知
UIKeyboardWillHideNotification//键盘消失的通知

具体用法如下:在viewDidload方法里注册这两个通知:

//注册监控键盘弹出.隐藏的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardWillShow:)name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardWillHidden:)name:UIKeyboardWillHideNotification object:nil];

然后实现他的方法,记得方法要带参数,我们需要从参数中获取键盘的一些信息:

- (void) keyBoardWillShow:(NSNotification*) notification
{
   
    NSDictionary *userInfo = [notification userInfo];

 //获取键盘的高度
    NSValue* aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];

 //获取键盘弹出的动画时间
    CGFloat interval = [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey]floatValue];
    
    CGRect keyboardEndFrame = [aValue CGRectValue];
    CGRect keyboardFrame = [self.view convertRect:keyboardEndFrame toView:nil];
    CGFloat keyboardHeight = keyboardFrame.size.height;
    
    [UIView animateWithDuration:interval animations:^{
        backgroundView.frame = CGRectMake(0,-keyboardHeight/3.0, SCREEN_WIDTH, SCREEN_HEIGHT);
    }];
}
-(void)keyBoardWillHidden:(NSNotification*) notification
{
    NSDictionary *userInfo = [notification userInfo];
    CGFloat interval = [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey]floatValue];
    [UIView animateWithDuration:interval animations:^{
        backgroundView.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
    }];
}

这样我们可以根据获取到的信息,进行一些操作,上面我是做了一个视图上移的动画!!!

对此,我做了一个简单的封装,可一句代码实现监听,含回调处理时间,完整demo下载地址:https://github.com/LQQZYY/KeyboardShowDismissDemo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值