UITextView 限制字符数和剩余显示数
UITextView limit characters and display count left
我正在尝试将 UITextView
的字符限制为 200 个。它从 Firebase 数据库(如果可用的话)获取数据,如果没有 - 表示剩余字符的 UILabel
应该被隐藏 - 因此,如果有数据(文本字段中的文本,它应该用左字符显示 UILabel
。
我确保将我的 UIViewController
作为 UITextViewDelegate
的委托,并且我还设置了 IBOutlet weak var descriptionTextView: TextViewX!
(TextViewX 是 UITextView
的子类) 并在 viewDidLoad()
方法中设置 descriptionTextView.delegate = self
。一旦您开始在文本视图中键入内容,标签计数就不会更新或根本不会显示。
此外,我还想在检测到剩余字符少于 30 个时,将 UILabel
的颜色从绿色更改为红色。
这是我的代码,但它不起作用。剩下的字符根本没有显示:
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)"
}
}
如果您仔细查看 UITextViewDelegate
的文档,您会发现 textViewDidChange
的定义如下:
optional func textViewDidChange(_ textView: UITextView)
看参数!它需要一个外部参数名称为 _
!
的参数
看看你写了什么:
func textViewDidChange(textView: TextViewX)
您的参数的外部名称是 textView
!
这就是它不起作用的原因。
所以,只需要在textView
前加上_
和一个space,并将参数类型改为UITextView
。
我正在尝试将 UITextView
的字符限制为 200 个。它从 Firebase 数据库(如果可用的话)获取数据,如果没有 - 表示剩余字符的 UILabel
应该被隐藏 - 因此,如果有数据(文本字段中的文本,它应该用左字符显示 UILabel
。
我确保将我的 UIViewController
作为 UITextViewDelegate
的委托,并且我还设置了 IBOutlet weak var descriptionTextView: TextViewX!
(TextViewX 是 UITextView
的子类) 并在 viewDidLoad()
方法中设置 descriptionTextView.delegate = self
。一旦您开始在文本视图中键入内容,标签计数就不会更新或根本不会显示。
此外,我还想在检测到剩余字符少于 30 个时,将 UILabel
的颜色从绿色更改为红色。
这是我的代码,但它不起作用。剩下的字符根本没有显示:
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)"
}
}
如果您仔细查看 UITextViewDelegate
的文档,您会发现 textViewDidChange
的定义如下:
optional func textViewDidChange(_ textView: UITextView)
看参数!它需要一个外部参数名称为 _
!
看看你写了什么:
func textViewDidChange(textView: TextViewX)
您的参数的外部名称是 textView
!
这就是它不起作用的原因。
所以,只需要在textView
前加上_
和一个space,并将参数类型改为UITextView
。