【问题标题】:Picker view hiding corresponding text field选择器视图隐藏相应的文本字段
【发布时间】:2021-07-22 12:11:44
【问题描述】:

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

aTextField.inputView = aPickerView

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

【问题讨论】:

标签: ios swift uiview uitextfield uipickerview


【解决方案1】:

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

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,

    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2016-01-30
    相关资源
    最近更新 更多