美文网首页
iOS键盘弹出 视图向上滚动键盘高度

iOS键盘弹出 视图向上滚动键盘高度

作者: 打瞌睡de小男孩 | 来源:发表于2017-04-11 10:57 被阅读1738次

    1.先添加对键盘的监听

    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
     [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
    

    当系统消息出现UIKeyboardWillShowNotification和UIKeyboardWillHideNotification消息就会调用我们的keyboardWillShow和keyboardWillHide方法。

    2.实现监听方法

    #pragma mark ---- 根据键盘高度将当前视图向上滚动同样高度
    ///键盘显示事件
    - (void)keyboardWillShow:(NSNotification *)notification {
        //获取键盘高度,在不同设备上,以及中英文下是不同的
        CGFloat kbHeight = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height;
        
        //计算出键盘顶端到inputTextView panel底端的距离(加上自定义的缓冲距离INTERVAL_KEYBOARD)
        CGFloat offset = kbHeight;
        
        // 取得键盘的动画时间,这样可以在视图上移的时候更连贯
        double duration = [[notification.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
        
        //将视图上移计算好的偏移
        if(offset > 0) {
            [UIView animateWithDuration:duration animations:^{
                self.view.frame = CGRectMake(0.0f, -offset, self.view.frame.size.width, self.view.frame.size.height);
            }];
        }
    }
    
    #pragma mark ---- 当键盘消失后,视图需要恢复原状
    ///键盘消失事件
    - (void)keyboardWillHide:(NSNotification *)notify {
        // 键盘动画时间
        double duration = [[notify.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
        //视图下沉恢复原状
        [UIView animateWithDuration:duration animations:^{
            self.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
        }];
    }
    
    

    3.注销通知

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

    4.然后在这里安利一个很好的第三方 IQKeyboardManager 特别好用
    有需要的可以直接去下载 https://github.com/hackiftekhar/IQKeyboardManager

    相关文章

      网友评论

          本文标题:iOS键盘弹出 视图向上滚动键盘高度

          本文链接:https://www.haomeiwen.com/subject/xgyyattx.html