对多个字段使用UITextFieldDelegate
我有以下代码以防止用户输入UITextField
中的多个句点.
,它工作正常,但我想对其他两个textField执行相同的操作,这怎么办?对多个字段使用UITextFieldDelegate
我试着将delegate
分配给多个字段,但它不起作用,它只适用于第一个应答。
class UserInputViewController: UIViewController, UITextFieldDelegate{
override func viewDidLoad() {
super.viewDidLoad()
self.myTextField.delegate = self
}
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let periodsInTextField = myTextField.text!.componentsSeparatedByString(".").count - 1
if (periodsInTextField > 0 && string == "."){
return false
}
return true
}
}
编辑(答案):下面是基于@ KKRocks的答案,下面是应该如何完成的。
class UserInputViewController: UIViewController, UITextFieldDelegate{
override func viewDidLoad() {
super.viewDidLoad()
self.myTextField.delegate = self
self.secondTextField.delegate = self
self.thirdTextField.delegate = self
}
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let periodsInTextField = textField.text!.componentsSeparatedByString(".").count - 1
if (periodsInTextField > 0 && string == "."){
return false
}
return true
}
}
请更改这一行
来源:
let periodsInTextField = myTextField.text!.componentsSeparatedByString(".").count - 1
要:
let periodsInTextField = textField.text!.componentsSeparatedByString(".").count - 1
@ KKRocks - 的委托不需要改变'self.myTextField.delegate = self'?如何将一个textField作为委托分配给多个字段。对不起,但我不是在我的电脑前试用它。 –
@fs_tigre如果检查委托方法'textField(textField:UITextField,shouldChangeCharactersInRange range:NSRange,replacementString string:String)'它返回一个实例'textfield:UITextField'。这将是相同的调用委托的文本字段。您只需要执行KKRocks提到的操作/更改。 – ibnetariq
我想我对代表团的工作方式有些困惑,我认为委托人发送的信息只会被分配给代理人的人接收,在这种情况下'myTextField'将是唯一能够知道关于这些消息'myTextField',因为它是分配给委托的那个。这个说法我错了吗? –
给下一文本字段相同的委托,你可以很容易地执行它 –