在我的应用中,我有2个文本字段。 taskTextField和DescTextField。我想将任务文本字段的字符限制为15,将描述文本字段限制为20.我已设法限制两者但我不知道如何单独执行它们。这是我的代码:
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
}
任何有关如何为每个文本字段制定单独限制的帮助都将不胜感激。
答案 0 :(得分:1)
为每个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
}
答案 1 :(得分:0)
基于您的代码,假设您可以通过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
}
}