ios - UITextField 的输入 View 未更改

标签 ios swift uitextfield

我创建了两个按钮。一个叫做 Weight,另一个叫做 Age。这两个按钮都将相同的 UITextField 设置为第一响应者。但是,如果触摸 Weight 按钮,则键盘类型变为数字键盘;如果触摸 Age 按钮,键盘类型变为 UIPickerVIew。这是下面的代码:

@IBOutlet var weightButton: UIButton!
@IBOutlet var ageButton: UIButton!
@IBOutlet var userInput: UITextField!

let agePicker = UIPickerView()
let ageAsString =  ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18"]
var selectedAge: Double?

override func viewDidLoad() {
    super.viewDidLoad()
    createAgePicker()
}

//ButtonsClicked
@IBAction func weightSearch(_ sender: Any) {
    wieghtResponse()
}

@IBAction func ageSearch(_ sender: Any) {
    ageResponse()
}

func userInputResponse() {
    userInput.inputView = nil
    if weightButton.isTouchInside {
        userInput.inputView = nil
        userInput.keyboardType = UIKeyboardType.numberPad
        userInput.becomeFirstResponder()
    } else if ageButton.isTouchInside {
        userInput.inputView = nil
        userInput.inputView = agePicker
        userInput.becomeFirstResponder()
    }

//CreateAgePicker
func createAgePicker() {
    agePicker.delegate = self
    agePicker.backgroundColor = .white
    agePicker.tintColor = .clear
}
//Components
@available(iOS 2.0, *)
func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}
//Rows
@available(iOS 2.0, *)
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return ageAsString.count
}
//Labels
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    return ageAsString[row]
}

我遇到的问题是,当我单击 Age 按钮时,选择器 View 会加载。但是,当我再次单击 Weight 按钮时,输入 View 不会恢复为数字键盘并保持为选择器。有什么建议吗?

最佳答案

尝试

func wieghtResponse(){
    userInput.inputView = nil // reset your input view for weight input
    userInput.keyboardType = UIKeyboardType.numberPad
    userInput.becomeFirstResponder()
}

关于ios - UITextField 的输入 View 未更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44928971/

相关文章:

iphone - 如何在重置之前更新密码标签?

IOS/objective-C : Subview of Subview not displaying

iOS Delegate 返回 nil (Swift)

iphone - 如何移动 UITextField 中的清除按钮?

ios - 如何在 UIViewController 和 UIView 之间进行协调

iphone - 视频修剪失败并阻止 AVAssetExportSessionStatus.Failed

ios - 合并两个数组和向下转型的元素

swift - 如何在开始编辑时清除所有 TextField 或在 Swift 3 中选择 TextField?

swift - 具有不连续底部边框的自定义 UITextfield

ios - 如果在 viewDidLoad 中将 Alpha 设置为 0 然后淡入,则 UISlider 不会被选中