iOS 解决键盘遮挡输入框问题,输入框随键盘弹起上移,切换输入法时动态调整 (Swift)

最近在项目中需要解决苹果系统输入法遮挡输入框的问题,预期结果为:

  1. 若键盘弹出后会遮挡输入框,则输入框随键盘弹起上移,输入法切换时输入框始终保持在距键盘上方 4pt 处;
  2. 若键盘弹出后不会遮挡输入框,但切换输入法后会遮挡输入框,则输入框需要在切换后上移,随后输入法切换时输入框始终保持在键盘上方 4pt 处。

效果示意:

效果示意

一. 背景

开发环境:iOS14.2 + Xcode v12.2 + Swift5
设备:iPhoneSE(其他机型测试有效)
页面采用自动布局

二. 实现方式

在viewWillAppear中添加键盘弹出、收起、frame变化的通知

override func viewWillAppear(_ animated: Bool) {
   
    super.viewWillAppear(animated)

    // 键盘弹出监听,解决键盘挡住输入框的问题
    NotificationCenter.default.addObserver(self,
                                           selector: #selector(keyboardWillAppear),
                                           name: UIResponder.keyboardWillShowNotification,
                                           object: nil)
    NotificationCenter.default.addObserver(self,
                                           selector: #selector(keyboardHasAppear),
                                           name: UIResponder.keyboardDidShowNotification,
                                           object: nil)
    NotificationCenter.default.addObserver(self,
                                           selector: #selector(keyboardWillDisappear),
                                           name: UIResponder.keyboardWillHideNotification,
                                           object: nil)
    NotificationCenter.default.addObserver(self,
                                           selector: #selector(keyboardFrameDidChange)
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值