UITextView 限制字符并显示剩余计数

Posted

技术标签:

【中文标题】UITextView 限制字符并显示剩余计数【英文标题】:UITextView limit characters and display count left 【发布时间】:2017-07-06 16:23:16 【问题描述】:

我正在尝试将 UITextView 的字符限制为 200。如果没有,它会从 Firebase 数据库(如果可用)获取数据 - 代表剩下的字符的 UILabel 应该被隐藏 - 因此,如果有数据(文本字段中的文本应该显示带有左侧字符的UILabel

我确保将我的UIViewController 设置为UITextViewDelegate 的代表,并且我还设置了IBOutlet weak var descriptionTextView: TextViewX!(TextViewX 是UITextView 的子类)并在@ 中设置descriptionTextView.delegate = self 987654329@ 方法。一旦您开始在文本视图中输入,标签计数根本不会更新或显示。

另外,当UILabel 检测到剩余的字符少于 30 个时,我还想将其颜色从绿色更改为红色。

这是我拥有的代码,但它不起作用。剩下的字符根本不显示:

func textView(_ textView: TextViewX, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool

    let newText = (textView.text as NSString).replacingCharacters(in: range, with: text)
    let numberOfChars = newText.characters.count
    return numberOfChars < 200


func textViewDidChange(textView: TextViewX)

    let currentCharacterCount = 200 - textView.text.characters.count

    if currentCharacterCount >= 30 
        descriptionCharacterCountLabel.text = "\(200 - textView.text.characters.count)"
    
    else
    
        descriptionCharacterCountLabel.textColor = UIColor.red
        descriptionCharacterCountLabel.text = "\(200 - textView.text.characters.count)"
    

【问题讨论】:

它是否成功阻止您在达到 200 个字符时输入更多文本? 你确定你的委托方法是通过放置断点来调用的吗? @Sweeper - 它达到极限并停止。 @Fangming Ning - 是的,代表有效。 @rmaddy - 它不是隐藏的,而是可见的。我看到UILabel 【参考方案1】:

如果您仔细查看UITextViewDelegate 的文档,您会发现textViewDidChange 的定义如下:

optional func textViewDidChange(_ textView: UITextView)

看参数!它需要一个外部参数名称为_!的参数!

看看你写了什么:

func textViewDidChange(textView: TextViewX)

您的参数的外部名称是textView!

这就是它不起作用的原因。

因此,只需在textView 之前添加_ 和一个空格,并将参数类型更改为UITextView

【讨论】:

我添加了descriptionTextView.addTarget(self, action: #selector(textChanged), for .editingChanged),但它显示了与“for”相关的错误,即“表达式列表中的预期表达式” @Dani 您需要在for 之后添加:。我的错! 我认为是这种情况,我尝试使用:,但它显示另一个错误,指出“TextViewX 类型的值没有成员添加目标” @Dani 我现在发现您的代码有什么问题。请参阅编辑后的答案。 天啊!是的!哈哈哈一小_,整个代码无效!非常感谢!

以上是关于UITextView 限制字符并显示剩余计数的主要内容,如果未能解决你的问题,请参考以下文章

UITextView 的最大行数限制是多少

TinyMCE 文本编辑器最大字符限制

如何限制 MonoTouch 中的 UITextView 字符限制? [复制]

UITextView 中不必要的换行符

由于行数和字符数,UITextView 限制文本

Swift 3 - 限制 uitextview 中的字符数