【发布时间】:2019-02-08 10:15:07
【问题描述】:
我的代码中有三个UITextFields 和一个UIPickerView,如所有文本字段中的inputView。
我想在UIPickerViewDelegate 方法pickerView(_:didSelectRow:inComponent:) 内确定哪个文本字段调用/打开了UIPickerView。
这是我尝试过的示例代码:
let tf1: UITextField()
let tf2: UITextField()
let tf3: UITextField()
let pcv: UIPickerView()
tf1.inputView = pcv
tf2.inputView = pcv
tf3.inputView = pcv
// Picker view delegate
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if (tf1.isFirstResponder) {
print("tf1")
} else if (tf2.isFirstResponder) {
print("tf2")
} else if (tf3.isFirstResponder) {
print("tf3")
} else {
print("Any other view")
}
}
还有其他更好的方法来处理这个问题吗?
(Objective C 或 Swift,任何解决方案)
【问题讨论】:
-
我知道您想在 pickerview 委托中执行此操作,但如果您对其他事情持开放态度,您可以通过
textFieldDidBeginEditing获取UITextFieldDelegate -
@DanielAmarante - 请指导我。怎么样?
-
您可以使用 tf1.inputView != nil 进行检查
-
对不起,我没看到。 isFirstResponder 发生了什么?
-
为什么你认为这不是更好的处理方式?
标签: ios objective-c swift uitextfield uipickerview