欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

iOS基础-小Demo--键盘弹出调整输入框位置(TextView或者TextFiled)

程序员文章站 2022-05-29 22:19:28
...
iOS基础-小Demo--键盘弹出调整输入框位置(TextView或者TextFiled)
有花堪折直须折,莫到无花空折枝!<轰隆雉鸡>

效果图:

iOS基础-小Demo--键盘弹出调整输入框位置(TextView或者TextFiled)
自定义发送框适应键盘弹出

分析:
正常情况下底部发送的发送框固定好位置后, 键盘弹出会把它挡住!那么就需要我们在键盘弹出的时候改变我们发送框工具栏的位置;
思路:
首先: 整体上来看 textView 和 "声音" "表情" "加号" 三个 Button 添加到一个 View上,然后对 View 进行约束, 这里需要其左边距离(父视图View)0,右边距0, 下面0 然后固定一个高度
其次: 监听键盘的行为当键盘弹出来的时候, 我们把发送框所在的 View 底部的约束进行适当的修改,让其显示在键盘的上方, 键盘消失后回到原来位置


代码实现:

1: 把发送框所在 View 的距离下部的约束拉进响应控制器作为属性

// 工具条底部约束
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *toolBottomConstraint;

2: 使用系统通话实现监听键盘的行为

#pragma mark  通知监听键盘弹出情况  使用的是系统的通知
#当键盘弹出的时候  执行kbWillShow:
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(kbWillShow:) name:UIKeyboardWillShowNotification object:nil];
#当键盘消失的时候 执行kbHideShow:
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(kbHideShow:) name:UIKeyboardWillHideNotification object:nil];```
3: 实现响应通知的方法
\#pragma mark  键盘弹出 触发事件

```code
# 键盘弹出 调整约束的高度
- (void)kbWillShow:(NSNotification *)noti
{
// 获取键盘的高度  首先获取当前键盘的 Rect
    CGRect kbFram = [noti.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
    CGFloat kbHeight = kbFram.size.height;
// 把约束改掉
    self.toolBottomConstraint.constant = kbHeight ;
  [UIView animateWithDuration:1 delay:0 options: UIViewAnimationOptionCurveEaseInOut  animations:^{
   // 布控子视图
 [self.view layoutIfNeeded];

    } completion:nil];
}
# 键盘收起  一切回到梦开始的地方
- (void)kbHideShow:(NSNotification *)noti
{
    // 把约束改成开始的 0 
    self.toolBottomConstraint.constant = 0 ;
    [UIView animateWithDuration:0.1 delay:0 options: UIViewAnimationOptionCurveEaseInOut  animations:^{
// 布控子视图 
[self.view layoutIfNeeded];

    } completion:nil];


}```

有时间在写高度适应的问题, 最近写点小项目! 加油!