键盘弹出/隐藏,界面滚动

假设需滚动界面为控制器的view,需进行以下操作

1.添加键盘frame变化监听

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

2.实现KeyboardWillChangeFrame方法,更改view左上角(原点)y值

- (void)KeyboardWillChangeFrame:(NSNotification *)notification
{
    //背景色调整,避免出现黑色背景
    self.view.window.backgroundColor = self.view.backgroundColor;
    
    //获取键盘frame
    CGRect keyboardFrame=[notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
    
    //键盘移动时间
    CGFloat keyDuration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] floatValue];
    
    //键盘移动距离
    CGFloat originY=CGRectGetHeight(self.view.frame)-CGRectGetMinY(keyboardFrame);
    
    if (CGRectGetMidY(keyboardFrame)>=CGRectGetHeight(self.view.frame)) {//判断键盘是否低于底边
        //键盘隐藏,原点y在0位置
        originY = originY;
        
    } else {
        //键盘弹出,原点y在在负移动间隔
        originY = -originY ;
    }
    
    //执行动画
    [UIView animateWithDuration:keyDuration animations:^{
           //判断某个控件触发键盘弹出
         //if([self.queryAge isFirstResponder]||[self.queryName isFirstResponder]){
            //原点移动到(0,originY)位置
           self.view.transform = CGAffineTransformMakeTranslation(0,originY);
         // } 
    }];
    
}

 

3.释放监听

- (void)dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillChangeFrameNotification object:nil];
}

转载于:https://www.cnblogs.com/Eazy/p/5242560.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值