ios - UiTextView 使用表情符号移动到下一个字符错误

标签 ios uitextview emoji nsrange

在 UiTextView 中,我有一个函数可以跳转到插入符号后的下一个字符:

textView.selectedRange = NSMakeRange(textView.selectedRange.location+1,0);

当我有表情符号时它不起作用,我必须两次。

我想知道我是否可以检查插入符号后的下一个字符是否是特殊字符,所以我在插入符号位置移动 2 而不是 1。

当我尝试获取那个范围的 NSString 时,它没有给出任何信息或错误

 NSRange myRange = NSMakeRange(textView.selectedRange.location,1);
 [textView.text substringWithRange:myRange]

有什么帮助吗?

最佳答案

使用 NSString rangeOfComposedCharacterSequenceAtIndex: 方法。对于大多数字符,这将返回一个长度为 1 的范围。但是对于 Unicode 值为 U+10000 或更大的字符,这将返回一个长度为 2 的范围。

这会将插入符号移动到下一个字符:

NSRange nextRange = [textView.text rangeOfComposedCharacterSequenceAtIndex:textView.selectedRange.location];
textView.selectedRange = NSMakeRange(nextRange.location + nextRange.length, 0);

关于ios - UiTextView 使用表情符号移动到下一个字符错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19306153/

相关文章:

html - 防止 HTML 实体转换为表情符号

ios - 带有混合应用程序的 ios 设备中的高度问题

ios - 核心数据关系 - 增加现有值(value)

ios - 将状态/绑定(bind)传递给 UIViewRepresentable

ios - UINavigationBar 按钮未按正确的逻辑禁用和启用

android - 在 Android TextView 中去除 Emoji Fitzpatrick(肤色)字符

iphone - hitTesting 时是否可以避免 SuperViews?

objective-c - 设置TextView文本属性后,屏幕没有相应更新

cocoa-touch - 复制所有文本后隐藏复制和取消选择 UITextView 选项

html - 如何在边缘使用表情符号