2017-03-17 31 views
-1

在我的应用程序中,我有两个文本字段。 taskTextField和DescTextField。我想将任务文本字段的字符限制为15,并将描述文本字段限制为20.我设法限制了这两个字段,但我不知道如何单独执行它们。这里是我的两个代码:在两个单独的文本域中限制字符Swift 3

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 
} 

如何为每个文本字段单独限制任何帮助,将不胜感激。

+1

检查哪个文本字段正在被段“textField”引用到函数中 –

回答

1
  1. 添加标签为每个UITextField

    let taskTextFieldTag = 100 
    let DescTextFieldTag = 101 
    
    override func viewDidLoad() { 
    
        // .. 
    
        taskTextField.tag = taskTextFieldTag 
        DescTextField.tag = DescTextFieldTag 
    
        // ... 
    } 
    
  2. 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 
    } 
    
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 
     } 
    } 
相关问题