【发布时间】:2017-05-18 18:15:44
【问题描述】:
在我的应用程序中,我有几个文本视图的表格视图,每当我单击文本视图时,它会自动向上滚动以显示键盘空间,这很好,现在问题是当我连接硬件键盘并单击文本视图时它仍然滚动为键盘空间预留空间,因此当键盘在应用程序中打开时,通常会隐藏一个空白空间。当我连接外部键盘时,应用程序可以调用UIKeyboardWillShowNotification,但不能调用UIKeyboardWillHideNotification。有没有我们可以避免出现空白的地方?
以下是如何处理我的键盘通知的示例代码
func keyboardWillShow(_ notification:Notification)
{
if myTextField.isFirstResponder {
self.tableView.frame.size.height = view.frame.size.height
if let userInfo = (notification as NSNotification).userInfo
{
if let keyboardRect = (userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue
{
mainScrollView.frame.size.height = view.frame.size.height - keyboardRect.size.height
tableViewTopConstraint.constant = keyboardRect.size.height-myView.submitViewHeightConstraint.constant
}
}
}
else{
self.mainScrollView.frame.size.height = view.frame.size.height
if let userInfo = (notification as NSNotification).userInfo
{
if let keyboardRect = (userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue
{
self.tableView.frame.size.height = view.frame.size.height + myView.frame.size.height - keyboardRect.size.height
}
}
}
}
func keyboardWillHide(_ notification:Notification){
tableViewTopConstraint.constant = 0.0
tableView.frame.size.height = view.frame.size.height - myView.frame.size.height
mainScrollView.frame.size.height = view.frame.size.height
DispatchQueue.main.async(execute: {
self.tableView.reloadData()
})
}
【问题讨论】:
标签: ios swift3 ios9 uikeyboard