【发布时间】:2019-01-18 19:41:57
【问题描述】:
我正在使用以下代码来解决 iOS 中键盘与 UITextField 重叠时的常见问题:
@IBOutlet var scrollView: UIScrollView!
var activeField: UITextField?
override func viewWillAppear(_ animated:Bool) {
super.viewWillAppear(animated)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(_:)), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
}
func textFieldDidBeginEditing(_ textField: UITextField) {
activeField = textField
}
func textFieldDidEndEditing(_ textField: UITextField) {
activeField = nil
}
键盘通知
func keyboardWillHide(_ notification: Notification) {
var info = notification.userInfo!
let keyboardSize = info[UIKeyboardFrameEndUserInfoKey] as? CGRect
let contentInsets: UIEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, -keyboardSize!.height , 0.0)
scrollView.contentInset = contentInsets
}
func keyboardWillShow(_ notification: Notification) {
var info = notification.userInfo!
let keyboardSize = info[UIKeyboardFrameEndUserInfoKey] as? CGRect
let contentInsets: UIEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardSize!.height + 8, 0.0)
scrollView.contentInset = contentInsets
}
它就像魔法一样。
但我面临以下问题。当键盘在文本编辑后隐藏时,视图会回到之前的状态,应该是这样的,但是滚动被禁用。我不知道为什么..我设置了scrollView.isScrollEnabled = true,但这并没有解决我的问题。
我怎样才能摆脱这个?
【问题讨论】:
-
您应该使用 IQKeyboaredManager 来处理视图,当使用 IQKeyboaredManager 出现键盘时,您将不需要处理它。 IQKeyboaredManager 会为您完成。
标签: ios swift uiscrollview uitextfield