You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

隐藏键盘后ScrollView无法滚动的技术问题求助

解决ScrollView隐藏键盘后无法滚动的问题

这种问题我碰到过好多次,大概率是键盘隐藏时没正确重置ScrollView的相关属性导致的!咱们一步步来排查和解决:

1. 首先确认你监听了键盘隐藏的通知

你只贴了键盘显示的处理函数,很可能没处理键盘隐藏的逻辑——这是关键!先在viewDidLoad里补上键盘隐藏的通知监听:

override func viewDidLoad() {
    super.viewDidLoad()
    // 注册键盘显示通知
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWasShown), name: UIKeyboardWillShowNotification, object: nil)
    // 一定要加上键盘隐藏的通知监听!
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillBeHidden), name: UIKeyboardWillHideNotification, object: nil)
}

2. 修正键盘显示的处理逻辑

你的原代码没写完,这里给你补全并优化一下,确保正确计算键盘高度并设置contentInset:

@objc func keyboardWasShown(notification: NSNotification) {
    guard let info = notification.userInfo,
          // 用UIKeyboardFrameEndUserInfoKey比Begin更准确,因为键盘可能有动画过程
          let keyboardFrame = info[UIKeyboardFrameEndUserInfoKey] as? CGRect else {
        return
    }
    // 计算适配旋转的键盘高度
    let keyboardHeight = keyboardFrame.size.height
    // 设置contentInset,让ScrollView底部留出键盘空间
    let contentInset = UIEdgeInsets(top: 0, left: 0, bottom: keyboardHeight, right: 0)
    scrollView.contentInset = contentInset
    scrollView.scrollIndicatorInsets = contentInset
    scrollView.isScrollEnabled = true
}

3. 关键:添加键盘隐藏的处理函数

这部分你大概率缺失了,需要在键盘隐藏时重置ScrollView的属性,恢复正常的滚动状态:

@objc func keyboardWillBeHidden(notification: NSNotification) {
    // 把contentInset和滚动指示器的inset恢复为默认值
    scrollView.contentInset = .zero
    scrollView.scrollIndicatorInsets = .zero
    // 确保滚动功能保持开启(除非你有特殊场景需要禁用)
    scrollView.isScrollEnabled = true
    // 可选:如果需要让ScrollView回到初始位置,可以加上这句
    // scrollView.setContentOffset(.zero, animated: true)
}

4. 排查其他可能的问题

如果上面的步骤还没解决,检查这两点:

  • 确认contentSize是否正确:确保你的contentView尺寸始终大于ScrollView的可见区域,可以在键盘隐藏后打印scrollView.contentSize看看数值是否符合预期。
  • 检查是否有其他代码误设isScrollEnabled = false:比如某些输入完成的回调里不小心禁用了滚动,全局搜一下这个属性的设置。

按这个流程来,基本就能解决隐藏键盘后ScrollView无法滚动的问题了!

内容的提问来源于stack exchange,提问作者Chowdhury Md Rajib Sarwar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:33:07