2017-09-16 117 views
0

限制字符這是我如何限制兩個文本框輸入的字符...問題在文本框

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 
     if textField == textField1 { 
      if (textField1.text?.characters.count)! + (string.characters.count - range.length) > 11 { 

       return false 
      } 
      return true 
     } else if textField == textField2 { 
      if (textField2.text?.characters.count)! + (string.characters.count - range.length) > 15 { 

       return false 
      } 

     } 
     return true 
    } 

但問題是隻有textField1是不允許進入超過11個字符,但textField2被接受任何數量的字符,而不應允許輸入超過15個字符。

回答

1

我想你沒有設置在viewDidLoad中的代表,

import UIKit 

class ViewController: UIViewController, UITextFieldDelegate{ 

    @IBOutlet var textField1 :UITextField! 
    @IBOutlet var textField2 :UITextField! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 


     self.textField1.delegate = self 
     self.textField2.delegate = self 


    } 

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 
     if textField == textField1 { 
      if (textField1.text?.characters.count)! + (string.characters.count - range.length) > 11 { 

       return false 
      } 
      return true 
     } else if textField == textField2 { 
      if (textField2.text?.characters.count)! + (string.characters.count - range.length) > 11 { 

       return false 
      } 

     } 
     return true 
    } 
+0

我發現代理沒有設置第二個文本框......但是已經給出了upvote .... :) –

2

由於沒有什麼錯你的代碼,你可以試試下面的檢查清單:

  • 檢查文本框2插座組。你可以做手工或
  • 你可以嘗試添加一個breakpoint(或打印)在你else if textField == textField2 {}阻止
  • 同時檢查的textField2delegate設置爲self以及

如果控制來else if塊那麼你的代碼必須工作。

+0

是的......我想到了...... textField2的代表沒有設置.. –

0

也許你忘了設置textField2的代表,然後我做了一個測試,你的代碼是工作的!