我有一个UITextView,我正在将所有文本视图更改事件记录到一个数组中 .
当用户快速删除(按住删除键使得一次删除的单词而不只是一个字符)时,当调用textView:shouldChangeTextInRange:replacementText方法时,范围变量的长度仅为1,而实际上是范围应该是单词中删除的字母数 . 有没有人知道这个Apple Bug的任何解决方法,所以我可以正确识别UITextView中的位置和范围以及更改的文本?
我有一个UITextView,我正在将所有文本视图更改事件记录到一个数组中 .
当用户快速删除(按住删除键使得一次删除的单词而不只是一个字符)时,当调用textView:shouldChangeTextInRange:replacementText方法时,范围变量的长度仅为1,而实际上是范围应该是单词中删除的字母数 . 有没有人知道这个Apple Bug的任何解决方法,所以我可以正确识别UITextView中的位置和范围以及更改的文本?
2 回答
不,它不是一个bug . 每次文本更改时,此函数都会调用 . 您可能正在使用调试模式并使用键盘提供退格键 . 它会在遇到断点之前生成多个事件 . 因此,该函数将多次调用 .
正如您在问题中提到的,即使整个单词被删除,“范围”也始终为1 . 您必须检查范围'range.length'的长度,它将为您提供从UITextView中删除的确切字符数 . 我有相同的场景,并根据它做了一些工作,只允许一次删除一个字符而不是整个单词: