设置`UITextView`和`UITextField`的最大字符数

big*_*ree 32 uitextfield uitextview ios swift

我想在a UITextView和a中设置允许输入的最大字符数UITextField.这个数字将以小标签显示(供用户参考,Twitter风格).

Abh*_*nav 88

更新Swift 4.X

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    let newText = (textView.text as NSString).replacingCharacters(in: range, with: text)
    let numberOfChars = newText.count
    return numberOfChars < 10    // 10 Limit Value
}
Run Code Online (Sandbox Code Playgroud)

试试这个:

func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
    let newText = (textView.text as NSString).stringByReplacingCharactersInRange(range, withString: text)
    let numberOfChars = newText.characters.count // for Swift use count(newText)
    return numberOfChars < 10;
}
Run Code Online (Sandbox Code Playgroud)

  • 最后一行不应该是“return numberOfChars &lt;= 10;”(小于符号应该小于或等于)吗? (2认同)
  • 如果您希望允许用户在“超出限制”时删除字符(如果您降低字符限制并且用户正在使用旧的(较长文本)进行编辑,则可能会发生这种情况,请添加一个防护...`guard !text.isEmpty否则{返回真}` (2认同)

Mak*_*zev 35

SWIFT 4

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
     let newText = (textView.text as NSString).replacingCharacters(in: range, with: text)
     return newText.count < 10
}
Run Code Online (Sandbox Code Playgroud)


Bog*_*kiy 12

斯威夫特4:

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
  let newText = (textView.text as NSString).replacingCharacters(in: range, with: text)
  return newText.count <= 70
}
Run Code Online (Sandbox Code Playgroud)


Abh*_*ick 9

试试这个: -

 func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
    print("chars \(textView.text.characters.count) \( text)")

    if(textView.text.characters.count > 20 && range.length == 0) {
        print("Please summarize in 20 characters or less")
        return false;
    }

    return true;
}
Run Code Online (Sandbox Code Playgroud)


Jun*_*tar 5

Swift 3.0

只需覆盖这个UITextFieldDelegate函数,设置所需的characterLimit变量就可以了:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool 
{        
        let characterLimit = 5
        let newText = NSString(string: textField.text!).replacingCharacters(in: range, with: string)
        let numberOfChars = newText.characters.count
        return numberOfChars < characterLimit
}
Run Code Online (Sandbox Code Playgroud)


Abd*_*hmi 5

Swift 5 更新

给出最前沿的结果

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    return range.location < 140 // limit to 140 chars
}
Run Code Online (Sandbox Code Playgroud)