Swift 从文本视图中减去字符

Swift 从文本视图中减去字符,swift,char,textview,Swift,Char,Textview,我有一个文本视图作为用户的个人简历。该应用程序的另一个功能是显示用户个人简历的预览,但仅显示预览,因此字符数应受到限制。例如,我只想显示textview总字符数中的30个字符。所以我认为Id实现应该是ChangeTextIn: func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { let newText = (t

我有一个文本视图作为用户的个人简历。该应用程序的另一个功能是显示用户个人简历的预览,但仅显示预览,因此字符数应受到限制。例如,我只想显示textview总字符数中的30个字符。所以我认为Id实现应该是ChangeTextIn:

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 < 30
}
func textView(textView:UITextView,shouldChangeTextIn范围:NSRange,replacementText:String)->Bool{
让newText=(textView.text作为NSString)。replacingCharacters(在:范围内,使用:text)
返回newText.count<30
}
但不起作用,因为它不适合这种情况。如果您想限制输入的字符数,而不是在读取数据并在文本视图中显示数据时,这是可以的


如果我的数据库中存储了一个“bio”字段,并且我将该信息称为显示在textView中,那么如何仅显示前30个字符,而不显示整个字段?

当您最初使用字符串的前缀(maxLength:int)函数将其分配给textView时,可以限制字符串

let textView = UITextView()
textView.isEditable = false
textView.text = String(bioFromDatabase.prefix(30))

如果您有一个
UITextView
来获取文本,并且您有一个
UILabel
来显示裁剪的生物信息,那么您应该这样做

let limit = 30

func textViewDidEndEditing(_ textView: UITextView) {
    label.text = String(textView.text.prefix(limit)) //define your limit outside or hard code it as you wish.
}
或者,您可以使用另一个代理对其进行实时更新

func textViewDidChange(_ textView: UITextView) {
    label.text = String(textView.text.prefix(limit))
}

您不在
UITextView
中显示数据,而是使用
UILabel
来显示数据。使用文本视图有什么问题@RakeshaShastriIt是一个为输入优化的元素,用于显示为输出优化的内容,即
UILabel
。哦,好的,我明白了。那么,如果不使用标签,我该如何解决这个问题呢?我的问题是,当用户编辑完数据并将其显示在标签中时,是否使用textView来实际更改数据,然后从textView中获取数据?无法将“String.SubSequence”(又名“Substring”)类型的值分配给“String!”必须将其浇铸到StringDon't use
shouldChangeTextIn
。使用
textViewDidChange
@rmaddy是我的错。编辑。偶尔的大脑放屁。叹息