我在视图控制器中有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处于活动状态时才移动视图的解决方案,任何想法?
3 回答
可以快速修复以节省一天,但我建议使用
UITableViewController
来构建表单页面 . 它会自动进行键盘处理 . 是的,您需要创建包含UITextField
的UITableViewCell
,但我认为这是可行的 .我不喜欢使用独立的
UITableViewController
,因为他们没有UIView
作为他们的self.view
,因此我将它们嵌入到我的视图控制器并在segue期间访问它的tableView
. 即使它不是tableView
的dataSource
/delegate
,它也会处理键盘 .我知道这不是确切的答案,但如果您只使用IQKeyboardManager,则无需在应用程序的任何场景中考虑这些人员 .
IQKeyboardManager
在
keyboardWillShow
和keyboardWillHide
中检查if colorCodePicker.isFirstResponder()
以决定是否更改约束 .