导航
当前位置:首页>>app
在线生成app,封装app

im聊天页面监听键盘的弹出

2025-04-07 围观 : 0次

当我们在IM聊天页面中输入文字时,会发现当键盘弹出时,聊天界面会随之上移,以便我们能够看到正在输入的内容。这个功能的实现是通过监听键盘的弹出事件来实现的。

首先,我们需要了解键盘弹出的原理。当我们点击输入框时,系统会弹出键盘,此时系统会发送一个通知给应用程序,通知应用程序键盘即将弹出。应用程序在收到通知后,就可以根据键盘的高度来调整界面的布局,以便让用户能够看到正在输入的内容。

在iOS中,我们可以通过监听系统发送的UIKeyboardWillShowNotification和UIKeyboardWillHideNotification通知来实现键盘的弹出和收起事件的监听。具体代码如下:

```swift

// 监听键盘弹出事件

NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: UIResponder.keyboardWillShowNotification, object: nil)

// 监听键盘收起事件

NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(_:)), name: UIResponder.keyboardWillHideNotification, object: nil)

```

在上面的代码中,我们通过NotificationCenter来注册监听键盘弹出和收起事件的通知。当系统发送UIKeyboardWillShowNotification通知时,我们就会调用keyboardWillShow方法,当系统发送UIKeyboardWillHideNotification通知时,我们就会调用keyboardWillHide方法。

接下来,我们来看一下具体实现。在keyboardWillShow方法中,我们可以获取键盘的高度,并通过修改聊天界面的布局来实现聊天界面上移的效果。具体代码如下:

```swift

@objc func keyboardWillShow(_ notification: Notification) {

if let keyboardFrame = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect {

// 获取键盘的高度

let keyboardHeight = keyboardFrame.height

// 修改聊天界面的布局

UIView.animate(withDuration: 0.25) {

self.tableView.contentInset.bottom = keyboardHeight

self.tableView.scrollIndicatorInsets.bottom = keyboardHeight

self.inputViewBottomConstraint.constant = keyboardHeight

self.view.layoutIfNeeded()

}

}

}

```

在上面的代码中,我们通过notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey]来获取键盘的高度,然后通过修改tableView的contentInset和scrollIndicatorInsets属性,以及inputViewBottomConstraint约束来实现聊天界面上移的效果。

同样,在keyboardWillHide方法中,我们也需要将聊天界面的布局还原回去。具体代码如下:

```swift

@objc func keyboardWillHide(_ notification: Notification) {

UIView.animate(withDuration: 0.25) {

self.tableView.contentInset.bottom = 0

self.tableView.scrollIndicatorInsets.bottom = 0

self.inputViewBottomConstraint.constant = 0

self.view.layoutIfNeeded()

}

}

```

在上面的代码中,我们将tableView的contentInset和scrollIndicatorInsets属性,以及inputViewBottomConstraint约束都还原成0,以实现聊天界面回到原始位置的效果。

综上所述,通过监听键盘的弹出和收起事件,我们可以实现聊天界面随着键盘的弹出和收起而自动调整布局的效果。

标签: 弹出 im
相关文章
  • app开发工作计划

    App开发工作计划是指在开发一个App之前,制定一个详细的工作计划,包括项目需求分析、技术方案选择、开发阶段安排、测试与验收等。制定一个完善的工作计划可以帮助开发团队充分了解项目背景、避免项目进度延误和质量不佳等问题,提高项目管理的有效性和开发效率。一、需求分析需求分析阶段是一个App开发过程中最为...

    2024-01-10
  • 0技术自己进行app开发赚钱项目大全

    现如今,手机在大家的生活中越来越重要,各种app软件开始改变我们的生活,很多企业及创业者为了赚钱,都开始选择开发自己的app。app面对的人群广,功能多,使用方便,受到了市场的追捧。而且,随着“变色龙云”类免编程app制作平台的发展,不用找专业的app开发公司...

    2023-12-24
  • 华为鸿蒙系统应不应该升级,鸿蒙系统有必要升级

    鸿蒙4有必要升级吗 鸿蒙0系统具有一定的升级必要性,但具体是否升级还需要根据个人实际情况来判断。鸿蒙0作为华为自主研发的操作系统,具有一定的优势和特点。建议。根据查询华为官网显示,华为mate30升级鸿蒙4系统后优化了系统的稳定性,优化了方舟引擎,优化了放大的显示效果,新增了高效玩法的实况窗、通知中...

    2024-01-28
  • app制作商,平台类电商app开发

    怎样做电商?教你零基础开发Android、iOS电商app平台现在,是开发电商APP平台较好的机会。如果你错过了,你可能至少会错过20年! 拼多多走在移动互联网电商的前列,成立仅三年就吸引了超过3亿用户,上市后估值超千亿。拼多多创...

    2024-01-01
  • 自己开发一个app怎么赚钱,app软件是怎么赚钱

    00-1010,大家对物质生活的追求越来越高,越来越多的人开始想走捷径,这就导致了各种兼职软件的兴起。但是这样的软件太多了,我们应该如何选择呢?事实上,我们不需要关注每天赚几百或几千。如果一味追求多挣钱,很容易陷入骗局。相信我,较好的...

    2024-01-21