同一视图中两个 UITextField 的不同条件
Different conditions for two UITextField in same View
我在同一个视图中有两个 UITextFields
,我希望每个都有特定的条件。第一个只需要接受 42
个字符长字符串,第二个只需要接受 0123456789
和 .
。
我使用 textField(_:shouldChangeCharactersIn:replacementString:)
设置了第一个文本字段,但如何设置第二个文本字段而不同时满足这两个条件?
文本字段:
@IBOutlet weak var firstTextField: UITextField!
@IBOutlet weak var secondTextField: UITextField!
第一个 TextField 条件:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
guard let text = textField.text else { return true }
let newLength = text.count + string.count - range.length
return newLength == 42
}
第二个 TextField 条件?
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let aSet = NSCharacterSet(charactersIn:".0123456789").inverted
let compSepByCharInSet = string.components(separatedBy: aSet)
let numberFiltered = compSepByCharInSet.joined(separator: "")
return string == numberFiltered
}
我不能使用 textField(_:shouldChangeCharactersIn:replacementString:)
两次,我可以这样做吗?
像
一样简单使用
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if textField == firstTextField{ // its Identify your textfield
guard let text = textField.text else { return true }
let newLength = text.count + string.count - range.length
return newLength == 42
}else{
let aSet = NSCharacterSet(charactersIn:".0123456789").inverted
let compSepByCharInSet = string.components(separatedBy: aSet)
let numberFiltered = compSepByCharInSet.joined(separator: "")
return string == numberFiltered
}
return true
}
我在同一个视图中有两个 UITextFields
,我希望每个都有特定的条件。第一个只需要接受 42
个字符长字符串,第二个只需要接受 0123456789
和 .
。
我使用 textField(_:shouldChangeCharactersIn:replacementString:)
设置了第一个文本字段,但如何设置第二个文本字段而不同时满足这两个条件?
文本字段:
@IBOutlet weak var firstTextField: UITextField!
@IBOutlet weak var secondTextField: UITextField!
第一个 TextField 条件:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
guard let text = textField.text else { return true }
let newLength = text.count + string.count - range.length
return newLength == 42
}
第二个 TextField 条件?
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let aSet = NSCharacterSet(charactersIn:".0123456789").inverted
let compSepByCharInSet = string.components(separatedBy: aSet)
let numberFiltered = compSepByCharInSet.joined(separator: "")
return string == numberFiltered
}
我不能使用 textField(_:shouldChangeCharactersIn:replacementString:)
两次,我可以这样做吗?
像
一样简单使用func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if textField == firstTextField{ // its Identify your textfield
guard let text = textField.text else { return true }
let newLength = text.count + string.count - range.length
return newLength == 42
}else{
let aSet = NSCharacterSet(charactersIn:".0123456789").inverted
let compSepByCharInSet = string.components(separatedBy: aSet)
let numberFiltered = compSepByCharInSet.joined(separator: "")
return string == numberFiltered
}
return true
}