2017-03-17 30 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 
     } 
    } 
相關問題