在 UITextField 和软件键盘之间提供最小填充 ios
Provide minimum padding between UITextField and software keyboard ios
我正在使用托管在 UIScrollView 中的 UITextField 并使用键盘通知来调整内容大小,现在当滚动视图滚动到文本字段时,键盘和文本字段之间的填充太小。无论如何我可以自定义填充??
您可以使用 IQKeyboardManager 自动提供填充,而无需使用单行代码的 scrollView 的任何麻烦。您可以通过 CocoaPods
或 Manually
.
安装它
添加滚动视图的底部约束出口(这必须是从底部开始的最后一个文本字段的底部约束)。
并在该视图控制器中添加以下代码行。
fileprivate func addKeyBoardNotifications() {
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
}
deinit {
NotificationCenter.default.removeObserver(self)
}
@objc func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
UIView.animate(withDuration: 0.1, animations: { () -> Void in
// self.view.frame.origin.y -= keyboardSize.height
self.scrollViewBottomAnchor.constant = -keyboardSize.height
self.view.layoutIfNeeded()
})
}
}
@objc func keyboardWillHide(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
UIView.animate(withDuration: 0.1, animations: { () -> Void in
self.scrollViewBottomAnchor.constant = 0
self.view.layoutIfNeeded()
})
}
}
我正在使用托管在 UIScrollView 中的 UITextField 并使用键盘通知来调整内容大小,现在当滚动视图滚动到文本字段时,键盘和文本字段之间的填充太小。无论如何我可以自定义填充??
您可以使用 IQKeyboardManager 自动提供填充,而无需使用单行代码的 scrollView 的任何麻烦。您可以通过 CocoaPods
或 Manually
.
添加滚动视图的底部约束出口(这必须是从底部开始的最后一个文本字段的底部约束)。 并在该视图控制器中添加以下代码行。
fileprivate func addKeyBoardNotifications() {
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
}
deinit {
NotificationCenter.default.removeObserver(self)
}
@objc func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
UIView.animate(withDuration: 0.1, animations: { () -> Void in
// self.view.frame.origin.y -= keyboardSize.height
self.scrollViewBottomAnchor.constant = -keyboardSize.height
self.view.layoutIfNeeded()
})
}
}
@objc func keyboardWillHide(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
UIView.animate(withDuration: 0.1, animations: { () -> Void in
self.scrollViewBottomAnchor.constant = 0
self.view.layoutIfNeeded()
})
}
}