在2个单独的文本字段中限制字符Swift 3
在我的应用程序中,我有两个文本字段。taskTextField和DescTextField。我想将任务文本字段的字符限制为15个,描述文本字段的字符限制为20个。我已经设法限制了两者,但我不知道如何分别做。以下是我的代码:在2个单独的文本字段中限制字符Swift 3,swift,uitextfield,Swift,Uitextfield,在我的应用程序中,我有两个文本字段。taskTextField和DescTextField。我想将任务文本字段的字符限制为15个,描述文本字段的字符限制为20个。我已经设法限制了两者,但我不知道如何分别做。以下是我的代码: let limitLength = 20 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String)
let limitLength = 20
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
guard let text = textField.text else { return true }
let newLength = text.characters.count + string.characters.count - range.length
return newLength <= limitLength
}
让limitLength=20
func textField(textField:UITextField,shouldChangeCharacters范围:NSRange,replacementString:string)->Bool{
guard let text=textField.text else{return true}
让newLength=text.characters.count+string.characters.count-range.length
返回newLength
为每个UITextField
添加标记:
let taskTextFieldTag = 100
let DescTextFieldTag = 101
override func viewDidLoad() {
// ..
taskTextField.tag = taskTextFieldTag
DescTextField.tag = DescTextFieldTag
// ...
}
在UITextFieldDelegate
中:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
guard let text = textField.text else {
return false
}
let newLength = text.utf16.count + string.utf16.count - range.length
var maxLength = 0
switch textField.tag {
case taskTextFieldTag:
maxLength = 15
case DescTextFieldTag:
maxLength = 20
default: break
}
return newLength <= maxLength
}
func textField(textField:UITextField,shouldChangeCharacters范围:NSRange,replacementString:string)->Bool{
guard let text=textField.text else{
返回错误
}
让newLength=text.utf16.count+string.utf16.count-range.length
var maxLength=0
开关textField.tag{
案例taskTextFieldTag:
最大长度=15
案例描述文本字段标记:
最大长度=20
默认值:中断
}
根据您的代码返回newLength,假设您可以通过IBOutlets将文本字段连接到代码
@IBOutlet weak var taskTextField: UITextField!
@IBOutlet weak var descTextField: UITextField!
let taskTextFieldlimitLength = 15
let descTextFieldlimitLength = 20
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
switch textField {
case taskTextField:
guard let text = textField.text else { return true }
let newLength = text.characters.count + string.characters.count - range.length
return newLength <= taskTextFieldlimitLength
case descTextField:
guard let text = textField.text else { return true }
let newLength = text.characters.count + string.characters.count - range.length
return newLength <= descTextFieldlimitLength
default:
return true
}
}
@IBOutlet弱var taskTextField:UITextField!
@IBEXTEXTFIELD:UITextField!
让taskTextFieldlimitLength=15
设descTextFieldlimitLength=20
func textField(textField:UITextField,shouldChangeCharacters范围:NSRange,replacementString:string)->Bool{
开关文本字段{
案例任务文本字段:
guard let text=textField.text else{return true}
让newLength=text.characters.count+string.characters.count-range.length
将参数textField
引用的文本字段返回newLength检查函数