在另一个文本字段的文本更改上更改UITextField的文本

zac*_*con 2 cocoa-touch uitextfield ios

我有六个文本字段.其中一个字段无法由用户编辑.相反,它接收来自其他五个的输入,将其压缩成一个字符串(每个输入之间具有冒号,具有特定排列).

无论何时修改任何已启用的文本字段,第六个文本字段的内容都会更改,并且输入的顺序不会更改.所以,如果我输入1,2,3,4,5在前五文本框,第六会读1:2:3:4:5.如果我将第二个文本字段的文本从更改2two,则第六个文本字段也将更改为1:two:3:4:5.

我已经知道如何执行此操作,创建五个全局变量,保存五个文本字段的值,然后从这些变量的连续中读取第六个.我无法弄清楚如何触发文本更改.

我试过用这个:

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {

}
Run Code Online (Sandbox Code Playgroud)

以及其他委托方法,但我不确定是否可行.

Bis*_*sta 5

创建一个数组:

var myArray= [String]()
Run Code Online (Sandbox Code Playgroud)

在viewDidLoad中执行此操作,当用户在文本字段中进行一些更改时分配操作(对所有textfield/1,2,3,4,5执行此操作):

textField1.addTarget(self, action: "textFieldDidChange:", forControlEvents: UIControlEvents.EditingChanged)

textField2.addTarget(self, action: "textFieldDidChange:", forControlEvents: UIControlEvents.EditingChanged)
Run Code Online (Sandbox Code Playgroud)

当用户编辑此方法时,将调用此方法:

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(":")
}
Run Code Online (Sandbox Code Playgroud)