Ios 更改另一个文本字段的文本时更改UITextField的文本
我有六个文本字段。用户无法编辑其中一个字段。相反,它从其他五个输入中接收输入,将其压缩为一个字符串(每个输入之间有冒号,并且有一定的排列) 任何时候修改任何已启用的文本字段,第六个文本字段的内容都会更改,并且输入的顺序不会更改。因此,如果我在前五个文本字段中输入Ios 更改另一个文本字段的文本时更改UITextField的文本,ios,cocoa-touch,uitextfield,Ios,Cocoa Touch,Uitextfield,我有六个文本字段。用户无法编辑其中一个字段。相反,它从其他五个输入中接收输入,将其压缩为一个字符串(每个输入之间有冒号,并且有一定的排列) 任何时候修改任何已启用的文本字段,第六个文本字段的内容都会更改,并且输入的顺序不会更改。因此,如果我在前五个文本字段中输入1,2,3,4,5,第六个文本字段将显示1:2:3:4:5。如果我将第二个文本字段的文本从2更改为two,则第六个文本字段的文本也将更改为1:two:3:4:5 我知道如何做到这一点,创建五个全局变量,保存五个文本字段的值,然后从这些字段
1
,2
,3
,4
,5
,第六个文本字段将显示1:2:3:4:5
。如果我将第二个文本字段的文本从2
更改为two
,则第六个文本字段的文本也将更改为1:two:3:4:5
我知道如何做到这一点,创建五个全局变量,保存五个文本字段的值,然后从这些字段的concat中读取第六个。我不知道如何触发文本更改
我试过用这个:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
}
与其他委托方法一起使用,但我不确定该怎么做。您可以通过名称访问特定的文本字段。比如,
func textFieldDidEndEditing(textField: UITextField) {
sixthTextField.text = "\(firstTextField.text):\(secondTextField.text)\(thirdTextField.text):\(fourthTextField.text)\(fifthTextField.text)"
}
当textField结束编辑时,此方法将执行代码。如果你想检查它的具体文本字段
func textFieldDidEndEditing(textField: UITextField) {
if (textField == secondTextfield) {
sixthTextField.text = "\(firstTextField.text):\(secondTextField.text)\(thirdTextField.text):\(fourthTextField.text)\(fifthTextField.text)"
}
}
这将仅在secondTextField结束编辑时执行代码
别忘了将UITextFieldDelegate添加到类中,也别忘了在viewDidLoad中设置textField的委托
class MyClass: UIViewController, UITextFieldDelegate {
override func viewDidLoad() {
super.viewDidLoad()
firstTextField.delegate = self
secondTextField.delegate = self
thirdTextField.delegate = self
fourthTextField.delegate = self
fifthTextField.delegate = self
sixthTextField.delegate = self
}
}
或者,您可以为valueChanged事件的每个文本字段创建iAction。与UIButton IBAction相同,事件仅存在差异。您应该选择valueChanged作为事件
@IBAction func firstTextFieldValueChanged(sender: UITextField) {
sixthTextField.text = "\(firstTextField.text):\(secondTextField.text):\(thirdTextField.text):\(fourthTextField.text):\(fifthTextField.text)"
}
@IBAction func secondTextFieldValueChanged(sender: UITextField) {
sixthTextField.text = "\(firstTextField.text):\(secondTextField.text):\(thirdTextField.text):\(fourthTextField.text):\(fifthTextField.text)"
}
@IBAction func thirdTextFieldValueChanged(sender: UITextField) {
sixthTextField.text = "\(firstTextField.text):\(secondTextField.text):\(thirdTextField.text):\(fourthTextField.text):\(fifthTextField.text)"
}
@IBAction func fourthTextFieldValueChanged(sender: UITextField) {
sixthTextField.text = "\(firstTextField.text):\(secondTextField.text):\(thirdTextField.text):\(fourthTextField.text):\(fifthTextField.text)"
}
@IBAction func fifthTextFieldValueChanged(sender: UITextField) {
sixthTextField.text = "\(firstTextField.text):\(secondTextField.text):\(thirdTextField.text):\(fourthTextField.text):\(fifthTextField.text)"
}
您可以实现
didEndEditing
delegate并在那里执行您的逻辑
func textFieldDidEndEditing(textField: UITextField) {
var text1:String?
var text2:String?
var text3:String?
var text4:String?
var text5:String?
if ((textField1.text) != nil) {
text1 = textField1.text
} else {
text1 = ""
}
if ((textField2.text) != nil) {
text2 = textField2.text
} else {
text2 = ""
}
if ((textField3.text) != nil) {
text3 = textField3.text
} else {
text3 = ""
}
if ((textField4.text) != nil) {
text4 = textField4.text
} else {
text4 = ""
}
if ((textField5.text) != nil) {
text5 = textField5.text
} else {
text5 = ""
}
textField6.text = String(format: "%@:%@:%@:%@:%@", text1, a2, a3, a4, a5)
}
添加textfield委托并将其实现到textfield1-textfield5以创建数组:
var myArray= [String]()
在viewDidLoad中执行此操作,当用户对文本字段进行某些更改时分配操作(对所有文本字段/1,2,3,4,5执行此操作):
当用户编辑某些内容时,将调用此方法:
func textFieldDidChange(textField: UITextField) {
myArray.removeAll()
if !textField1.isEmpty {
myArray.append(textField1.text)
}
if !textField2.isEmpty {
myArray.append(textField2.text)
}
if !textField3.isEmpty {
myArray.append(textField3.text)
}
if !textField4.isEmpty {
myArray.append(textField4.text)
}
if !textField5.isEmpty {
myArray.append(textField5.text)
}
textField6.text = myArray.joinWithSeparator(":")
}
如果用户没有在第三个文本字段中输入值怎么办?“
1:2:4:5
”?@the_-UB,是的。跳过那个,然后跳过后面的冒号。谢谢。值得注意的是,“:”.join(myArray)
在Swift 2上不起作用。必须使用myArray.joinWithSeparator(“:”)。
func textFieldDidChange(textField: UITextField) {
myArray.removeAll()
if !textField1.isEmpty {
myArray.append(textField1.text)
}
if !textField2.isEmpty {
myArray.append(textField2.text)
}
if !textField3.isEmpty {
myArray.append(textField3.text)
}
if !textField4.isEmpty {
myArray.append(textField4.text)
}
if !textField5.isEmpty {
myArray.append(textField5.text)
}
textField6.text = myArray.joinWithSeparator(":")
}