首页 文章

如何禁用特定textField上的键盘但允许选择器视图作为输入Swift?

提问于
浏览
1

我在视图控制器中有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 回答

  • 1

    可以快速修复以节省一天,但我建议使用 UITableViewController 来构建表单页面 . 它会自动进行键盘处理 . 是的,您需要创建包含 UITextFieldUITableViewCell ,但我认为这是可行的 .

    我不喜欢使用独立的 UITableViewController ,因为他们没有 UIView 作为他们的 self.view ,因此我将它们嵌入到我的视图控制器并在segue期间访问它的 tableView . 即使它不是 tableViewdataSource / delegate ,它也会处理键盘 .

  • 1

    我知道这不是确切的答案,但如果您只使用IQKeyboardManager,则无需在应用程序的任何场景中考虑这些人员 .

    IQKeyboardManager

  • 1

    keyboardWillShowkeyboardWillHide 中检查 if colorCodePicker.isFirstResponder() 以决定是否更改约束 .

相关问题