ios - UIPickerView 作为多个 UITextField 的 inputView

标签 ios objective-c swift uitextfield uipickerview

我有三个UITextField s 在我的代码和单个 UIPickerViewinputView所有文本字段。

我想确定在 UIPickerViewDelegate 中哪个文本字段调用/打开了 UIPickerView方法 pickerView(_:didSelectRow:inComponent:) .

这是我试过的示例代码:

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,任何解决方案)

最佳答案

在您的文本字段委托(delegate)上为您的文本字段分配输入 View 和标签

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
   textField.inputView = pcv
   pcv.tag =  textField.tag
    return true;
}

最后获取 pickerview 的标签以识别您点击的文本字段。

 func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        print("pickerView == \(pickerView.tag)")

}

关于ios - UIPickerView 作为多个 UITextField 的 inputView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54590167/

相关文章:

ios - 我们可以在使用内部分发的 iPhone 应用程序中使用 paypal 或 amzon 结帐吗?

ios - TestFlight Beta 仅允许 30 天

ios - AVCaptureFileOutputRecordingDelegate 不写入文件,Swift 2

ios - 添加 child 时,如何使用 Swift 和 Firebase 向每台设备发送通知?

ios - 如何获取视频回复列表 YouTube API Objective C

ios - UICollectionView单元格图像错误

iphone - 字节数组到 UIImage Objective-C

ios - 使用 Storyboard?.实例化返回 "Unexpectedly found nil"错误

ios - 如何在 Swift 3 中将 unicode 表情符号设置为 UIButton 的标题?

ios - 如何在 View Controller 被关闭后显示警报