我試圖從用戶按下鍵盤上的刪除按鈕時從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字符串的問題。 –