美文网首页iOS 开发iOS开发经验总结iOS Developer
【iOS 开发】获取设备键盘高度,解决键盘挡住输入框和按钮

【iOS 开发】获取设备键盘高度,解决键盘挡住输入框和按钮

作者: 爱吃鸭梨的猫 | 来源:发表于2017-03-15 11:39 被阅读3157次
    键盘

    下面的方法可以获取到设备键盘的高度,能够解决键盘弹出时挡住用户输入界面或按钮,所导致用户体验下降的问题。


    1. 注册键盘弹出和退出时的通知监听

    /* 增加监听(当键盘出现或改变时) */
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    
    /* 增加监听(当键盘退出时) */
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
    

    2. 键盘弹出时的事件处理

    /**
     *  键盘弹出
     */
    - (void)keyboardWillShow:(NSNotification *)aNotification {
       
        /* 获取键盘的高度 */
        NSDictionary *userInfo = aNotification.userInfo;
        NSValue *aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
        CGRect keyboardRect = aValue.CGRectValue;
       
        /* 输入框上移 */
        CGFloat padding = 20;
        CGRect frame = self.registerButton.frame;
        CGFloat height = kScreenHeight - frame.origin.y - frame.size.height;
        if (height < keyboardRect.size.height + padding) {
           
            [UIView animateWithDuration:kAnimationDuration animations:^ {
               
                CGRect frame = self.view.frame;
                frame.origin.y = -(keyboardRect.size.height - height + padding);
                self.view.frame = frame;
            }];
        }
    }
    

    3. 键盘退出时的事件处理

    /**
     *  键盘退出
     */
    - (void)keyboardWillHide:(NSNotification *)aNotification {
       
        /* 输入框下移 */
        [UIView animateWithDuration:kAnimationDuration animations:^ {
           
            CGRect frame = self.view.frame;
            frame.origin.y = 0;
            self.view.frame = frame;
        }];
    }
    

    将来的你,一定会感激现在拼命的自己,愿自己与读者的开发之路无限美好。

    我的传送门: 博客简书微博GitHub

    相关文章

      网友评论

      本文标题:【iOS 开发】获取设备键盘高度,解决键盘挡住输入框和按钮

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