iOS-当输入框被键盘遮挡时让整个view上移

Posted 懒猫口米

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS-当输入框被键盘遮挡时让整个view上移相关的知识,希望对你有一定的参考价值。

    • 注册键盘通知
    #pragma mark - 键盘通知
    - (void)addNoticeForKeyboard {
    
        //注册键盘出现的通知
        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(keyboardWillShow:)
                                                     name:UIKeyboardWillShowNotification object:nil];
        //注册键盘消失的通知
        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(keyboardWillHide:)
                                                     name:UIKeyboardWillHideNotification object:nil];
    }
    • 键盘代理事件
    ///键盘显示事件
    - (void) keyboardWillShow:(NSNotification *)notification {
        //获取键盘高度,在不同设备上,以及中英文下是不同的
        CGFloat kbHeight = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height;
    
        //计算出键盘顶端到inputTextView panel底端的距离(加上自定义的缓冲距离INTERVAL_KEYBOARD)
        CGFloat offset = (textView.frame.origin.y+textView.frame.size.height+INTERVAL_KEYBOARD) - (self.view.frame.size.height - 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);
            }];
        }
    }
    
    ///键盘消失事件
    - (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);
        }];
    }


    作者:奋斗的蜗牛
    链接:http://www.jianshu.com/p/4e235e952b0c
    來源:简书

以上是关于iOS-当输入框被键盘遮挡时让整个view上移的主要内容,如果未能解决你的问题,请参考以下文章

ios --键盘监听JYKeyBoardListener

Android WebView加载页面的输入框被软键盘遮挡的问题

IOS键盘输入屏幕上移

安卓手机底部输入框被软键盘遮挡的坑

iOS-监听键盘输入,视图整体上移或恢复-避免输入遮挡

移动端中 H5输入框在弹起键盘后被遮挡