带表情符号设置的UITextView.text:cursorPosition不正确

时间:2017-04-06 06:10:41

标签: ios swift uitextview emoji

此处,str包含表情符号并且设置cursorPosition不正确:

  let cursorPosition = str.characters.count
  let cursorRange = NSRange(location: cursorPosition, length: 0)
  textInputView.selectedRange = cursorRange
  textInputView.scrollRangeToVisible(cursorRange)

2 个答案:

答案 0 :(得分:2)

看起来你想把光标放在0的最后。试试这种方式。

textView

答案 1 :(得分:0)

这是一个古老的问题,但是如果我再次遇到这个问题,我会加一些要点:

Nirav D答案仅在您要转到字符串末尾时有效。

之所以会发生这种情况,是因为表情符号在字符串中算作单个字符位置,而当光标位置使用utf16字符串位置时,它们在文本字段中算作一个以上的位置。这就是为什么光标不会与您的代码一起移到文本字段的末尾。

如果要将光标移动到末尾以外的任何位置,请使用string.utf16对应的位置。