在Swift中设置UITextField的最大字符长度 [英] Set the maximum character length of a UITextField in Swift

查看:280
本文介绍了在Swift中设置UITextField的最大字符长度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道还有其他主题,但我似乎无法找到如何实现它。

I know there are other topics on this but I can't seem to find out how to implement it.

我正在尝试将UITextField限制为仅5个字符

I'm trying to limit a UITextField to only 5 Characters

最好使用字母数字和 - 和。和_

Preferably Alphanumeric and - and . and _

我见过这段代码

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange,
                       replacementString string: String) -> Bool
{
    let maxLength = 4
    let currentString: NSString = textField.text
    let newString: NSString =
             currentString.stringByReplacingCharactersInRange(range, withString: string)
    return newString.length <= maxLength
}

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {

    let length = count(textField.text.utf16) + count(string.utf16) - range.length
    return length <= 10 
}

我只是不知道如何实际实现它,或者我应该换出哪个textfield用于我的自定义命名UITextField

I just don't know how to actually implement it or which "textfield" should I swap out for my custom named UITextField

推荐答案


  1. 您的视图控制器应符合 UITextFieldDelegate ,如下所示:

class MyViewController: UIViewController, UITextFieldDelegate {

}


  • 设置文本字段的委托: myTextField.delegate = self

    所有在一起:

    class MyViewController: UIViewController,UITextFieldDelegate  //set delegate to class 
    
    @IBOutlet var mytextField: UITextField             //  textfield variable 
    
    override func viewDidLoad() {
        super.viewDidLoad()
        mytextField.delegate = self                  //set delegate
    }
    
    
    func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange,
                           replacementString string: String) -> Bool
    {
        let maxLength = 4
        let currentString: NSString = textField.text
        let newString: NSString =
                 currentString.stringByReplacingCharactersInRange(range, withString: string)
        return newString.length <= maxLength
    }
    

    对于Swift 4

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        let maxLength = 1
        let currentString: NSString = textField.text! as NSString
        let newString: NSString =
            currentString.replacingCharacters(in: range, with: string) as NSString
        return newString.length <= maxLength
    }
    

    只允许将指定的字符集输入给定的文本字段

    func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
      var result = true
    
      if mytextField == numberField {
        if count(string) > 0 {
          let disallowedCharacterSet = NSCharacterSet(charactersInString: "0123456789.-").invertedSet
          let replacementStringIsLegal = string.rangeOfCharacterFromSet(disallowedCharacterSet) == nil
          result = replacementStringIsLegal
        }
      }
    
      return result
    }
    

    如何编写仅包含最大长度的数字输入的iOS文本字段

    这篇关于在Swift中设置UITextField的最大字符长度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

  • 查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆