Ios TextField应开始编辑所有文本字段

Ios TextField应开始编辑所有文本字段,ios,swift,Ios,Swift,我想实现textFieldShouldBeginEditing,这样我就可以为一些文本字段显示带有对话框的弹出窗口,而其他字段则是自由文本 我是这样实现的: func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool{ if(textField == self.petType) { petTypePicker = CZPickerView(headerTitle: "Pet

我想实现textFieldShouldBeginEditing,这样我就可以为一些文本字段显示带有对话框的弹出窗口,而其他字段则是自由文本

我是这样实现的:

   func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool{


    if(textField == self.petType)
    {
        petTypePicker = CZPickerView(headerTitle: "Pet Types", cancelButtonTitle: "Cancel", confirmButtonTitle: "Choose")
        petTypePicker?.delegate = self
        petTypePicker?.dataSource = self
        petTypePicker?.needFooterView = true
        petTypePicker?.headerBackgroundColor = #colorLiteral(red: 0.4509803922, green: 0.3529411765, blue: 0.7647058824, alpha: 1)
        petTypePicker?.confirmButtonBackgroundColor = #colorLiteral(red: 0.4509803922, green: 0.3529411765, blue: 0.7647058824, alpha: 1)
        petTypePicker?.show()
        return false
    }
    else if(textField == self.petBread)
    {
        breedPicker = CZPickerView(headerTitle: "Breeds", cancelButtonTitle: "Cancel", confirmButtonTitle: "Choose")
        breedPicker?.headerBackgroundColor = #colorLiteral(red: 0.4509803922, green: 0.3529411765, blue: 0.7647058824, alpha: 1)
        breedPicker?.confirmButtonBackgroundColor = #colorLiteral(red: 0.4509803922, green: 0.3529411765, blue: 0.7647058824, alpha: 1)
        breedPicker?.delegate = self
        breedPicker?.dataSource = self
        breedPicker?.needFooterView = true
        breedPicker?.show()
        return false
    }
    else if(textField == self.petColor){
        colourPicker = CZPickerView(headerTitle: "Colours", cancelButtonTitle: "Cancel", confirmButtonTitle: "Choose")
        colourPicker?.headerBackgroundColor = #colorLiteral(red: 0.4509803922, green: 0.3529411765, blue: 0.7647058824, alpha: 1)
        colourPicker?.confirmButtonBackgroundColor = #colorLiteral(red: 0.4509803922, green: 0.3529411765, blue: 0.7647058824, alpha: 1)
        colourPicker?.delegate = self
        colourPicker?.dataSource = self
        colourPicker?.needFooterView = true
        colourPicker?.show()
        return false
    }
    else if(textField == self.petDateOfBirth){

        let currentDate = Date()

        DatePickerDialog().show(title: "DatePickerDialog", doneButtonTitle: "Done", cancelButtonTitle: "Cancel", minimumDate: nil, maximumDate: currentDate, datePickerMode: .date) { (date) in
            if let dt = date {
                let dateFormatter = DateFormatter()

                dateFormatter.dateStyle = .medium

                self.petDateOfBirth.text = "\(dateFormatter.string(from: dt) as String)"
            }
        }

        return false
    }
    else{


        return true

    }

}
但出于某种原因,情况就是这样:

当返回值为false时,它工作正常;当返回值为true时,它为所有texfield触发textFieldShouldBeginEditing方法,这使它们都进入if语句,从而触发所有对话框

如果您知道我为什么会遇到这种行为,请注意,所有字段都在堆栈视图中

谢谢

我很高兴它成功了;)


使用实例属性isFirstResponder()检查是否单击了正确的文本字段。在您的情况下,将if语句修改为
if self.petType.isFirstResponder()
就可以了

尝试使用实例属性isFirstResponder()。将您的if语句从if textField==self.petType更改为if self.petType.isFirstResponder()。@webjunkie谢谢您,成功了!!我将textField.isFirstResponder()与所有条件匹配,结果成功:)谢谢。请将其添加为答案,使其成为正确答案。