iOS键盘覆盖静态tableview单元格中的一些UITextField

时间:2017-10-02 02:41:48

标签: ios uitableview

我的静态UITableView的单元格中有一些UITextField。获得焦点时,大多数都很好。

enter image description here

enter image description here

但是当某些字段获得焦点时(例如,当我单击“单位否”字段时),单元格会跳转并将像这样覆盖键盘。

enter image description here

完全没有任何线索。任何的想法?感谢。

2 个答案:

答案 0 :(得分:2)

尝试使用此广告连播https://github.com/hackiftekhar/IQKeyboardManager,它将涵盖所有键盘方案。

如果您想使用自定义代码,您必须在 viewWillAppear 中订阅 UIKeyboardWillShow UIKeyboardWillHide ,并在 viewWillDisappear <中取消订阅/ strong>即可。在覆盖 touchesBegan 之后,这将处理您在屏幕上的所有触摸,您可以在此功能中结束编辑。

我的示例代码:

override func viewWillAppear(_ animated: Bool) {

    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: .UIKeyboardWillShow, object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: .UIKeyboardWillHide, object: nil)

}

override func viewWillDisappear(_ animated: Bool) {

    NotificationCenter.default.removeObserver(self)
}

func keyboardWillShow(notification: NSNotification) {
  if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
      UIView.animate(withDuration: 1, animations: {
            self.view.bounds.origin.y += keyboardSize.height
      }
  }
}

func keyboardWillHide(notification: NSNotification) {
    self.view.bounds.origin.y = 0
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

    self.view.endEditing(true)
}

答案 1 :(得分:0)

您是否尝试过IQKeybordManager POD。它会自动管理所有内容。