AI智能
改变未来

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{// 获取键盘的高度  首先获取当前键盘的 RectCGRect 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{// 把约束改成开始的 0self.toolBottomConstraint.constant = 0 ;[UIView animateWithDuration:0.1 delay:0 options: UIViewAnimationOptionCurveEaseInOut  animations:^{// 布控子视图[self.view layoutIfNeeded];} completion:nil];}```有时间在写高度适应的问题, 最近写点小项目! 加油!
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » iOS基础-小Demo–键盘弹出调整输入框位置(TextView或者TextFiled)