当某些特定的文本字段被键盘隐藏时如何向上移动表格视图?
How to move tableview up when some particular textfield are hidden by keyboard?
我有一个表格视图,表格视图单元格中有文本字段's.when我尝试输入文本,特别是在表格视图底部的文本字段中,然后文本字段被键盘隐藏。
我正在尝试使用下面的代码来解决这个问题。
override func viewWillAppear(_ animated: Bool) {
NotificationCenter.default.addObserver(self, selector: #selector(keyBoardWillChange(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyBoardWillChange(notification:)), name: UIResponder.keyboardWillHideNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyBoardWillChange(notification:)), name: UIResponder.keyboardWillChangeFrameNotification, object: nil)
}
@objc func keyBoardWillChange(notification : Notification)
{
print("Keyboard will show :\(notification.name.rawValue)")
let cell = deliveryTableView.cellForRow(at: IndexPath.init(row: 8, section: 0))
view.frame.origin.y = -175
}/*
@objc func KeyBoardWillHide(notification : Notification)
{
UIView.animateKeyframes(withDuration: 0.25, delay: 0.0, options: UIView.KeyframeAnimationOptions.allowUserInteraction, animations: {
self.view.frame = CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height)
}, completion: nil)
}*/
deinit {
NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardDidShowNotification, object: nil)
NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillHideNotification, object: nil)
NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillChangeFrameNotification, object: nil)
}
但问题是,即使在单击第一个文本字段时,tableview 也会向上移动,这看起来不太好。但我希望 tableview 仅在底部存在文本字段的情况下向上移动。
使用 IQKeyboardManager 和 appdelegate.It 中的一行代码即可处理键盘。
步骤 1) 在 pod-file 和 运行 中添加 pod 'IQKeyboardManager' pod install
步骤2)在appdelegate的didFinishLaunchingWithOptions方法中写这段代码启用IQKeyboardManager
IQKeyboardManager.shared.enable = 真
我有一个表格视图,表格视图单元格中有文本字段's.when我尝试输入文本,特别是在表格视图底部的文本字段中,然后文本字段被键盘隐藏。 我正在尝试使用下面的代码来解决这个问题。
override func viewWillAppear(_ animated: Bool) {
NotificationCenter.default.addObserver(self, selector: #selector(keyBoardWillChange(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyBoardWillChange(notification:)), name: UIResponder.keyboardWillHideNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyBoardWillChange(notification:)), name: UIResponder.keyboardWillChangeFrameNotification, object: nil)
}
@objc func keyBoardWillChange(notification : Notification)
{
print("Keyboard will show :\(notification.name.rawValue)")
let cell = deliveryTableView.cellForRow(at: IndexPath.init(row: 8, section: 0))
view.frame.origin.y = -175
}/*
@objc func KeyBoardWillHide(notification : Notification)
{
UIView.animateKeyframes(withDuration: 0.25, delay: 0.0, options: UIView.KeyframeAnimationOptions.allowUserInteraction, animations: {
self.view.frame = CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height)
}, completion: nil)
}*/
deinit {
NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardDidShowNotification, object: nil)
NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillHideNotification, object: nil)
NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillChangeFrameNotification, object: nil)
}
但问题是,即使在单击第一个文本字段时,tableview 也会向上移动,这看起来不太好。但我希望 tableview 仅在底部存在文本字段的情况下向上移动。
使用 IQKeyboardManager 和 appdelegate.It 中的一行代码即可处理键盘。
步骤 1) 在 pod-file 和 运行 中添加 pod 'IQKeyboardManager' pod install
步骤2)在appdelegate的didFinishLaunchingWithOptions方法中写这段代码启用IQKeyboardManager
IQKeyboardManager.shared.enable = 真