美文网首页
UITextView中光标位置插入文字

UITextView中光标位置插入文字

作者: 山已几孑 | 来源:发表于2020-12-10 16:46 被阅读0次

    原因很狗血,写好的功能,别人用崩溃,自己用没啥问题

    Bug的原因很简单,就是已输入文字中含有了Emojy表情,导致textView的selectedRange和String的endIndex 对不上,导致超出范围。
    比如 伪代码:

    textView.text = “12345” 
    // 的长度是都是5
    
    textView.text = “12345🙀”
    //textView.selectedRange.location = 7
    //textView.text.count = 6
    

    而之前的写法是直接把string插入到当前的text中,再赋值给textView,伪代码:

    let targetText = ""
    var text = textView.text
    let range = textView.selectedRange
    // 崩在了这里,超出范围额
    let index = str.index(str.startIndex, offset: range.location)
    text.insert(targetText, atIndex: index)
    textView.text = text
    

    这一大段写下来,丑着还挺像回事的,然鹅啊,哎


    百度过程不表


    最终在这里:how to insert text at any cursor position in uitextview?

    有这么一句

    [textView replaceRange:textView.selectedTextRange withText:insertingString];
    

    好嘛,selectedTextRange 是一个UITextRange类型的对象,自己转好像还挺麻烦的,好在是系统API。
    这个func replace(_ range: UITextRange, withText text: String)也是textView的方法,一句话就完事儿了。

    哎,孤陋寡闻了😷😷😷,百度也孤陋寡闻,查的驴唇不对马嘴。

    相关文章

      网友评论

          本文标题:UITextView中光标位置插入文字

          本文链接:https://www.haomeiwen.com/subject/lrrrgktx.html