如何使用键盘移动 UI TextField 以避免阻塞 [SWIFT 5+ ]
How to move UITextFeild with keyboard in order to avoid blocking [SWIFT 5+ ]
我知道有几个关于此主题的问题,但我无法在 [SWIFT 5.0] 或更高版本上找到任何问题,非常感谢您的帮助。
我在屏幕底部有一个 UITextFeild,每次用户单击它时它都会隐藏。最近有没有一种方法可以解决这个隐藏问题,方法是将键盘后面的 textFeild 移到顶部,或者在键盘顶部显示一个示例字段。任何帮助将不胜感激,谢谢!
您可以使用以下代码:
首先,在您的控制器 viewDidLoad() 方法中添加这两行代码:
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)
其次,将这两个方法添加到您的控制器中:
@objc func keyboardWillShow(notification: NSNotification) {
if yourTextfield.isEditing == true
{
if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
self.view.frame.origin.y -= keyboardSize.height
}
}
}
@objc func keyboardWillHide(notification: NSNotification) {
if self.view.frame.origin.y != 0 {
self.view.frame.origin.y = 64
}
}
享受 :).
如果您使用 AutoLayout,您可以尝试使用我的 collection 方便的 Swift 扩展中的 Keyboard
和 KeyboardLayoutGuide
以及名为 SwiftToolkit 的 类
将此代码添加到您的控制器 viewDidLoad()
方法:
let keyboardGuide = KeyboardLayoutGuide()
view.addLayoutGuide(keyboardGuide)
/**
Your textField vertical position constraint
must have lower priority than this constraint
*/
keyboardGuide.topAnchor.constraint(greaterThanOrEqualTo: textField.bottomAnchor, constant: 8).isActive = true
当键盘出现时,它会将您的 UITextField 向上推:
我知道有几个关于此主题的问题,但我无法在 [SWIFT 5.0] 或更高版本上找到任何问题,非常感谢您的帮助。
我在屏幕底部有一个 UITextFeild,每次用户单击它时它都会隐藏。最近有没有一种方法可以解决这个隐藏问题,方法是将键盘后面的 textFeild 移到顶部,或者在键盘顶部显示一个示例字段。任何帮助将不胜感激,谢谢!
您可以使用以下代码:
首先,在您的控制器 viewDidLoad() 方法中添加这两行代码:
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)
其次,将这两个方法添加到您的控制器中:
@objc func keyboardWillShow(notification: NSNotification) {
if yourTextfield.isEditing == true
{
if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
self.view.frame.origin.y -= keyboardSize.height
}
}
}
@objc func keyboardWillHide(notification: NSNotification) {
if self.view.frame.origin.y != 0 {
self.view.frame.origin.y = 64
}
}
享受 :).
如果您使用 AutoLayout,您可以尝试使用我的 collection 方便的 Swift 扩展中的 Keyboard
和 KeyboardLayoutGuide
以及名为 SwiftToolkit 的 类
将此代码添加到您的控制器 viewDidLoad()
方法:
let keyboardGuide = KeyboardLayoutGuide()
view.addLayoutGuide(keyboardGuide)
/**
Your textField vertical position constraint
must have lower priority than this constraint
*/
keyboardGuide.topAnchor.constraint(greaterThanOrEqualTo: textField.bottomAnchor, constant: 8).isActive = true
当键盘出现时,它会将您的 UITextField 向上推: