iOS - 设置底部输入框随键盘的移动而移动

xib:一个tableview和一个view ,并设置一些约束,输入框的底部紧贴着整个view的底部

iOS - 设置底部输入框随键盘的移动而移动_第1张图片

下边的输入框需要设置为随键盘的移动而移动


一 .将底部约束拖到对应的.m文件中

iOS - 设置底部输入框随键盘的移动而移动_第2张图片


二 .在适当的位置(如:viewDidLoad)注册通知

// 注册通知
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];
三 .并加入以下代码:
- (void)keyboardWillChangeFrame:(NSNotification *)note
{
    // 键盘显示\隐藏完毕的frame
    CGRect frame = [note.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
    // 修改底部约束
    self.bottomSpace.constant = [UIScreen mainScreen].bounds.size.height - frame.origin.y; // 屏幕的高度 - 键盘的Y值
    // 动画时间
    CGFloat duration = [note.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];
    // 动画
    [UIView animateWithDuration:duration animations:^{
        [self.view layoutIfNeeded]; // 自动布局的view改变约束后,需要强制布局
    }];
}

- (void)dealloc
{
    // 移除通知
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

现在,底部输入框就会随键盘的移动而移动了

iOS - 设置底部输入框随键盘的移动而移动_第3张图片

设置当tableView拖拽时退出键盘

一 .设置tableView的delegate为对应的控制器

iOS - 设置底部输入框随键盘的移动而移动_第4张图片


二 .遵守协议:

@interface LXFCommentViewController () 
三 .实现代码方法:

#pragma mark - 
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    [self.view endEditing:YES];
}





你可能感兴趣的:(iOS开发)