gpt4 book ai didi

ios - 当用户点击不同的文本字段时,关闭 pickerView 并打开相应的 pickerView

转载 作者:行者123 更新时间:2023-11-29 05:31:47 24 4
gpt4 key购买 nike

我在 View 中有多个文本字段,其中输入 View 设置为 pickerView,但是根据文本字段,应该显示不同数量的选择行。当您单击选取器 View 外部,然后单击下一个文本字段时,此方法工作正常,但当您仅单击下一个文本字段时,会导致崩溃(这是因为 pickerView 不会更改,因此索引超出范围)。感谢您的帮助!

每当在外部点击时关闭 pickerView(如果点击另一个文本字段则不执行任何操作):

self.view.addGestureRecognizer(UITapGestureRecognizer(target: self.view, action: #selector(UIView.endEditing(_:))))

当我说不同的文本字段显示不同的行数时,我的意思是:

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if ticketOneTextField.isFirstResponder == true {
if shownEvent?.ticketTypeOnePrice == "0.00" {
return 2
} else {
return 11
}
} else if ticketTwoTextField.isFirstResponder == true {
if shownEvent?.ticketTypeTwoPrice == "0.00" {
return 2
} else {
return 11
}
} else if ticketThreeTextField.isFirstResponder == true {
if shownEvent?.ticketTypeThreePrice == "0.00" {
return 2
} else {
return 11
}
} else {
return 2
}
}

最佳答案

在viewDidLoad()中添加

当用户开始编辑时,将调用以下函数。

textField.addTarget(self, action:#selector(textDidBeginEditing(_:)), forControlEvents: UIControlEvents.EditingDidBegin)

然后实现这个:

    func textDidBeginEditing(sender:UITextField) -> Void
{
if sender == ticketOneTextField {
//show pickerview
}
else if sender == ticketOneTextField {
//show pickerview
}
else if sender == ticketOneTextField {
//show pickerview
}
}

// this pickerview delegate is called when user selects a row.
optional func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
//after user selects the value end the editing
self.view.endEditing(true)
}

关于ios - 当用户点击不同的文本字段时,关闭 pickerView 并打开相应的 pickerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57465203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com