【问题标题】:Swift IOS - Using UIPickerView AND KeyboardSwift IOS - 使用 UIPickerView 和键盘
【发布时间】:2023-03-03 17:17:01
【问题描述】:

在我的应用中,当用户点击 UITextField 时,他应该能够从 UIPickerView 中获取一个值,或者使用键盘输入他自己的值。

就用户体验和易于实施而言,最好的方法是什么?

带有工具栏的 UIPickerView 已经实现。

我会很感激关于最佳方式的建议和切换键盘的示例代码pickerview。

我尝试在pickerview的工具栏上添加一个“显示键盘”按钮并添加以下代码:

func showKeyboard() {
    selectedTextField.inputView = nil
}

但是单击此按钮不会执行任何操作。我也不确定这在用户体验方面是否是一个好方法。

【问题讨论】:

  • 将 inputView 设置为 nil 后,尝试 selectedTextField.resignFirstResponder() 然后 selectedTextField.becomeFirstResponder()
  • 感谢@Tobias,我刚刚尝试了所有可能的命令中的 resignFirstResponder、becomeFirstResponder 和 inputView = nil,但它们都没有拉起键盘。

标签: ios swift uipickerview


【解决方案1】:

解决办法如下:

var useKeyboard:Bool = true
func showKeyboard() {
    if useKeyboard {
        useKeyboard = false
        selectedTextField.inputView = nil
        selectedTextField.reloadInputViews()
        selectedTextField.keyboardAppearance = UIKeyboardAppearance.Default
        selectedTextField.keyboardType = UIKeyboardType.Default
    } else {
        useKeyboard = true
        selectedTextField.inputView = nil
        selectedTextField.reloadInputViews()
        createPicker(selectedTextField)
        selectedTextField.resignFirstResponder()
        selectedTextField.becomeFirstResponder()
    }
}

// That's my custom picker - adjust whatever you need
func createPicker(sender: UITextField){
    selectedTextField = sender

    // Create picker view
    var newPickerView: UIPickerView
    newPickerView = UIPickerView(frame: CGRectMake(0, 200, view.frame.width, 300))
    newPickerView.backgroundColor = .whiteColor()

    // Only for UIPickerView
    newPickerView.showsSelectionIndicator = true
    newPickerView.delegate = self
    newPickerView.dataSource = self

    // Create toolbar
    var toolBar = UIToolbar()
    toolBar.barStyle = UIBarStyle.Default
    toolBar.translucent = true
    toolBar.tintColor = UIColor(red: 76/255, green: 217/255, blue: 100/255, alpha: 1)
    toolBar.sizeToFit()

    // Create buttons
    var doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: "donePicker")
    var spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil)
    var cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Plain, target: self, action: "cancelPicker")
    var customButton = UIBarButtonItem(title: "Keyboard", style: UIBarButtonItemStyle.Plain, target: self, action: "showKeyboard")

    // Assign buttons to toolbar
    toolBar.setItems([cancelButton, spaceButton, customButton, doneButton], animated: false)
    toolBar.userInteractionEnabled = true

    // Add pickerview and toolbar to textfield
    sender.inputView = newPickerView
    sender.inputAccessoryView = toolBar
}
func donePicker() {
    useKeyboard = true
    selectedTextField.resignFirstResponder()
}
func cancelPicker() {
    useKeyboard = true
    selectedTextField.resignFirstResponder()
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多