gpt4 book ai didi

ios - 为什么 range.length 值在 shouldChangeCharactersInRange 委托(delegate)方法中因退格而改变?

转载 作者:可可西里 更新时间:2023-11-01 00:16:45 25 4
gpt4 key购买 nike

在我将用户限制为最多 24 个字符后,我试图弄清楚这一行对退格键的效果如何。但我不知道它是如何工作的。

我试图找出 range.length 的值,如果我插入一些字符,它会设置为 0。但是当我在删除字符时按下后退按钮时,我将值设置为 1?这是为什么?

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

println("range is \(range)")
println("range location is \(range.location)")
println("range length is \(range.length)")

if (textlength - (range.length) + count(string)) > 24 {
textField.layer.borderColor = UIColor.redColor().CGColor
textField.layer.borderWidth = 1.0

println("\(newString)")
return false
}
return true
}

最佳答案

尝试插入 3 个字符长的文本。然后全选并点击剪切。你应该看到类似这样的东西:

range is (0,3)
range location is 0
range length is 3

插入时长度为 0,因为未选择任何内容。您只有 光标 位置。当你删除你的 range.length 将是可以删除的字符串的长度。当您回击时,您只需删除最后一个字符,因此 range.length 为 1。

关于ios - 为什么 range.length 值在 shouldChangeCharactersInRange 委托(delegate)方法中因退格而改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29553514/

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