在2个单独的文本字段中限制字符Swift 3

在2个单独的文本字段中限制字符Swift 3,swift,uitextfield,Swift,Uitextfield,在我的应用程序中,我有两个文本字段。taskTextField和DescTextField。我想将任务文本字段的字符限制为15个,描述文本字段的字符限制为20个。我已经设法限制了两者,但我不知道如何分别做。以下是我的代码: let limitLength = 20 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String)

在我的应用程序中,我有两个文本字段。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
}
让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检查函数