我试图从用户按下键盘上的删除按钮时从UITextView中检索已删除的字符。无法从iOS中的UITextView中删除字符
当我在例如:(abc)的textview中输入一些文本时,我可以通过检查范围和位置来检索删除的字符。所以对于英文文本没有任何问题
挑战从非英文文本开始,例如“印地语”语言。假设我在textview中输入了“परक”,然后如果我从右到左一次删除一个字符,我可以分别将删除的字符标识为क,र,प。
真正的问题开始时,我有串
对于例如,在印地文元音:如果我有一个文本为“परी”。然后根据印地文文本,它包含三个字符,如प,र,ी。这里是印地语中的一个长元音
当我在textview中输入ी时,委托方法能够识别此文本。
但是,当我按键盘上的删除按钮从单词“परी”删除ी,确定哪个单词被删除的范围计算似乎出错。 我得到范围值删除ी作为
范围(3 .. < 3) - 的startIndex:3 - endIndex的:3
由于startIndex和endIndex的是一样的,我得到一个空字符串。
以下是我使用的输入或TextView的
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
if (range.location == 0 && text == " ")
{
return false
}
// Its backspace
if text == ""
{
// Set startIndex for Range
let startIndex = textView.text.startIndex.advancedBy(range.location, limit: textView.text.endIndex)
// Set new Range
let newRange = startIndex..<textView.text.startIndex.advancedBy(range.location + range.length, limit: textView.text.endIndex)
// Get substring
// Here I get the character that is about to be deleted
let substring = textView.text[newRange]
print(substring) //Gives empty string when i delete ी
return true
}
print(text) // This prints ी when i enter it in textview after पर
return true
}
删除字符这将是巨大的,如果任何人都可以帮我这个代码。我使用Android进行了检查,并且在删除时能够识别。 等候为好奇的答复....
注:代码是写在雨燕2.3
这是uncode问题吗?你可以尝试一次将字符串转换为固定的unicode,然后比较范围? – idocode
参数收到的'range'的值是多少?我不知道有关印地文字符,但在Swift Playground中,''परी“。characters.count'和'”¡“字符.count'返回'2' ...但是,''परी”。lengthOfBytes (使用:.utf8)'是'9'和'''''lengthOfBytes(使用:.utf8)'是'6'。似乎是如何处理UNICODE字符串的问题。 –