选择器视图隐藏相应的文本字段

时间:2021-04-29 06:29:07

标签: ios swift uiview uitextfield uipickerview

我在故事板中创建了多个 UITextField。一些文本字段使用键盘编辑,而其他文本字段使用选择器视图。在我的视图控制器中,对于使用 pickerView 的字段,我为每个文本字段创建了单独的选择器视图。例如。

aTextField.inputView = aPickerView

现在对于位于屏幕底部的文本字段,当我点击其中一个时,对应于该文本字段的选择器视图会在底部打开并隐藏文本字段。我想在选择器视图打开时将当前选定的文本字段向上移动。 在键盘的情况下,可以通过响应 UIResponder.keyboardWillShowNotification 来完成视图的转换。在选择器视图的情况下如何执行此操作?

1 个答案:

答案 0 :(得分:0)

我能想到的一种解决方案是观察键盘高度。当您按下必须显示底部 textField 的选择器视图时,使用键盘高度和一些额外的点将其移动到键盘上。以下是一些帮助方法来实现这一点:

override func viewDidLoad() {
super.viewDidLoad()

// Add keyboard observers
addObservers()
}

private func addObservers() {
    NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
}

// keyboard will be active
@objc private func keyboardWillShow(notification: NSNotification) {

    // Get keyboard Size
    if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
        // update constraints / footerview height with keyboard height "keyboardSize.height"
    }
}

    // keyboard will dismiss
@objc private func keyboardWillHide(notification: NSNotification) {
    if (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue != nil {
     // update constraints / footerview height when keyboard is hidden,

    }
}
相关问题