我在视图控制器中有2个textFields,一个使用pickerView作为输入而另一个使用键盘,问题是在pickerView下仍然启用了键盘。我设置了当使用底部的文本字段时,键盘向上移动视图以使textField可见但是当我点击使用pickerView的顶部textField时它也会向上移动视图而你看不到textField上的输入。我只需要在顶部textField上使用pickerView,这样在使用该文本字段时视图就不会向上移动。 以下是我用来移动视图的内容:
func keyboardWillShow(notification: NSNotification) {
bottomConstraint.constant = 200
topConstraint.constant = -200
UIView.animateWithDuration(0.3) {
self.view.layoutIfNeeded()
}
}
func keyboardWillHide(notification: NSNotification) {
bottomConstraint.constant = 8
topConstraint.constant = 10
UIView.animateWithDuration(0.3) {
self.view.layoutIfNeeded()
}
}
以下是viewDidLoad中pickerView的设置:(colorCodePicker是带有pickerView作为输入的textField)
let pickerView = UIPickerView()
pickerView.delegate = self
pickerView.backgroundColor = UIColor.whiteColor()
colorCodePicker.inputView = pickerView
我在这里尝试了大部分解决方案但是没有任何工作,即如果我禁用用户输入而不能调用pickerView,也尝试在textField上插入一个清除按钮,就像其中一个建议一样运气。或者也许只有在底部textField处于活动状态时才会向上移动视图的解决方案?
答案 0 :(得分:1)
我知道这不是确切的答案,但如果您只是使用IQKeyboardManager,则无需在应用程序的任何场景中考虑这些人员。
答案 1 :(得分:1)
同时keyboardWillShow
和keyboardWillHide
检查if colorCodePicker.isFirstResponder()
以决定是否更改约束。
答案 2 :(得分:1)
可以快速修复以保存当天,但我建议使用UITableViewController
来构建表单页面。它会自动进行键盘处理。是的,您需要创建包含UITableViewCell
的{{1}},但我认为这是可行的。
我不喜欢使用独立的UITextField
,因为他们UITableViewController
没有UIView
,因此我将它们嵌入到我的视图控制器并访问其self.view
在segue期间。即使它不是tableView
的{{1}} / dataSource
,它也会处理键盘。