美文网首页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