在关闭时将UIToolBar固定在键盘顶部,可以通过以下步骤实现:
以下是一个示例代码:
// 监听键盘打开和关闭事件
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(_:)), name: UIResponder.keyboardWillHideNotification, object: nil)
// 键盘打开时的处理方法
@objc func keyboardWillShow(_ notification: Notification) {
if let keyboardFrame = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect {
let toolbarHeight: CGFloat = 44.0 // 自定义UIToolBar的高度
let toolbarFrame = CGRect(x: 0, y: keyboardFrame.origin.y - toolbarHeight, width: UIScreen.main.bounds.width, height: toolbarHeight)
let toolbar = UIToolbar(frame: toolbarFrame)
// 设置UIToolBar的样式、按钮等
self.view.addSubview(toolbar)
}
}
// 键盘关闭时的处理方法
@objc func keyboardWillHide(_ notification: Notification) {
if let toolbar = self.view.subviews.first(where: { $0 is UIToolbar }) {
toolbar.removeFromSuperview()
}
}
这样,在键盘打开时,会在键盘顶部固定一个UIToolBar,键盘关闭时,UIToolBar会被移除。你可以根据需要自定义UIToolBar的样式和按钮。
前阵子在一个移动项目中,通过 的方式 绑定click 事件来提交一个表单,由于表单信息比较敏感,于是采用的post 同步提交的方式,原本到也没有什么。后来万恶的PM说 “你这个按钮呀,要固定在底部比较好” ,于是乎就通过 position:fixed 固定到底部了。那么,问题来了 , 在ios 下,虚拟键盘是浮在页面上层的,导致的结果是当键盘收起后,浮在最底部的按钮不在最底下,而跑到中间来了,(极端条件下还可能挡住输入框导致无法输入),并且随着屏幕的滚动而滚动,,(表现类似于absolute) ,,高大上的苹果也是真心坑了一回。
领取专属 10元无门槛券
手把手带您无忧上云