限制文本字段中的字符的问题

时间:2017-09-16 05:34:35

标签: ios swift uitextfield

这就是我限制在两个textFields中输入的字符...

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个字符。

3 个答案:

答案 0 :(得分:2)

由于您的代码没有任何问题,您可以尝试以下检查清单:

  • 检查是否设置了textfield 2插座。您可以手动或
  • 执行此操作
  • 您可以尝试在breakpoint阻止
  • 中添加else if textField == textField2 {}(或打印)
  • 同时检查delegate的{​​{1}}是否也设为textField2

如果控件来到self块,则代码必须正常工作。

答案 1 :(得分: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
    }

答案 2 :(得分:0)

也许你忘记设置textField2的委托了,我做了一个测试,你的代码工作正常!