我正在使用 -
shouldChangeTextIn range: NSRange -
在我输入时更改3个标签中的文字。 如果我在文本仍在更新时快速从标签更改为标签2,则会出现以下错误导致崩溃
是否有检查我可以放入函数以确保我在范围内或索引存在?
2018-03-24 09:51:05.024557+0000 textinput3[24714:952788] ***
Terminating app due to uncaught exception 'NSRangeException', reason:
'- [__NSCFString replaceCharactersInRange:withString:]: Range or
index out of bounds'
这是功能。
func textView(_ textField: UITextView, shouldChangeTextIn range: NSRange, replacementText string: String) -> Bool {
if field?.tag == 1 {
updatedText = ((field?.text as NSString?)?.replacingCharacters(in: range, with: string))!
}
if field?.tag == 2 {
updatedTitleText = ((field?.text as NSString?)?.replacingCharacters(in: range, with: string))!
}
if field?.tag == 3 {
updatedCaptionText = ((field?.text as NSString?)?.replacingCharacters(in: range, with: string))!
}
return true
}
(键入字符和出现的字符之间存在轻微的延迟,因此如果在前一个标签仍在更新时更改为其他标签,则会发生崩溃)