gpt4 book ai didi

swift - shouldChangeCharactersInRange 使用表情符号给出不同的范围

转载 作者:行者123 更新时间:2023-11-28 16:02:49 37 4
gpt4 key购买 nike

如果我实现方法shouldChangeCharactersInRange范围值和文本大小之间存在某种不一致。当我的文本字段只有一个普通字母(如“a”)并按退格键时,要替换的文本是一个空字符串,textField.text!.characters.count返回 1 并且愤怒的位置为 0,长度为 1(这一切都有意义),但是如果文本字段只有一个表情符号(如“😃”),range.length返回 2 而不是 1,然后我在从 NSRange 转换范围时发生崩溃至 Range<String.Index> .为什么会这样?

最佳答案

swift 3.0+

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

guard let strtext = textField.text else {
return true }

let completeString = (strtext as NSString).replacingCharacters(in: range, with: string)
let increment = string == "" ? 0 : 1

let finalString = (completeString as NSString).substring(with: NSRange(location: 0, length: range.location + increment))

print(finalString)

return true
}

Note: - This will gives the string with range startIndex to cursor position

关于swift - shouldChangeCharactersInRange 使用表情符号给出不同的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40744853/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com