美文网首页
键盘不遮挡文本输入框

键盘不遮挡文本输入框

作者: 哎呦我去叫什么呢 | 来源:发表于2016-07-23 22:34 被阅读40次

//首先要在viewDidLoad里面注册监听事件
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];

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

//键盘出现text上移
-(void) keyboardWillShow:(NSNotification *)notification{

//获取键盘高度,在不同设备上,以及中英文下是不同的
CGFloat kbHeight = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height;

//计算出键盘顶端到inputTextView panel底端的距离(加上自定义的缓冲距离INTERVAL_KEYBOARD)
CGFloat offset = (self.promptText.frame.origin.y+self.promptText.frame.size.height + (100 * kY)) - (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);
    }];
    }

相关文章

网友评论

      本文标题:键盘不遮挡文本输入框

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