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

时间:2016-02-17 14:57:58

标签: ios swift cocoa-touch uitextfield uipickerview

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

答案 0 :(得分:1)

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

IQKeyboardManager

答案 1 :(得分:1)

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

答案 2 :(得分:1)

可以快速修复以保存当天,但我建议使用UITableViewController来构建表单页面。它会自动进行键盘处理。是的,您需要创建包含UITableViewCell的{​​{1}},但我认为这是可行的。

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

相关问题