Ios TextField应开始编辑所有文本字段
我想实现textFieldShouldBeginEditing,这样我就可以为一些文本字段显示带有对话框的弹出窗口,而其他字段则是自由文本 我是这样实现的:Ios TextField应开始编辑所有文本字段,ios,swift,Ios,Swift,我想实现textFieldShouldBeginEditing,这样我就可以为一些文本字段显示带有对话框的弹出窗口,而其他字段则是自由文本 我是这样实现的: func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool{ if(textField == self.petType) { petTypePicker = CZPickerView(headerTitle: "Pet
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()与所有条件匹配,结果成功:)谢谢。请将其添加为答案,使其成为正确答案。