gpt4 book ai didi

ios - UITextField shouldChangeCharactersInRange 没有检测到第一个字符

转载 作者:搜寻专家 更新时间:2023-11-01 07:26:12 27 4
gpt4 key购买 nike

我有一个 UITextField,我正在尝试将其格式化为电话号码,但由于某种原因,我正在努力获取 UITextField 的第一个字母。

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
{
if textField == myTextField {
var updatedTextString : NSString = PartialFormatter().formatPartial(textField.text!)

self.formattedPhoneNumber(updatedTextString, textField: textField)
}
return true
}

func formattedPhoneNumber(updatedTextString: NSString, textField: UITextField) {
textField.text = updatedTextString as String
print(updatedTextString)
}

我做错了什么?

请注意我使用的是 PhoneNumberKit为了格式化电话号码(并使用 PartialFormatter().formatPartial)


编辑:我尝试在 textField 文本的开头添加默认的 + 符号(作为数字 +44..)

var updatedTextString : NSString = PartialFormatter().formatPartial("+\(textField.text!)")

但它完全错了。它一开始一直打印++++ ,然后自行修复 4 个字符或更多。

所以它就像...

   I press 1 - `+1` on UITextField - `+` on console 
then press 5 - `++15` on UITextField - `++1` on console
then press 6 - `+++156` on UITextField - `+++15` on console

then press 8 - `+1568` on UITextField - `+1 56` on console
// so it magically fixed itself after 4 chars.

Also removing everything leaves `+++` on UITextField and `++++` on console
and doesn't delete more

我做错了什么?


编辑 2:

我尝试使用下面发布的答案。但是现在,它只是简单的数字。它们不与 PartialFormatter().formatPartial()

分组
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
{
if textField == myTextField {
let textString : NSString = textField.text!
let candidateString : NSString = textString.stringByReplacingCharactersInRange(range, withString: string)
let updatedTextString : NSString = PartialFormatter().formatPartial(candidateString as String)

self.formattedPhoneNumber(updatedTextString, textField: textField)
}
return true
}

最佳答案

shouldChangeCharactersInRange() 函数询问是否应应用更改,但它尚未允许修改您的文本字段。

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
{
if textField == myTextField {
let textString : NSString = textField.text!
let candidateString : NSString = textString.stringByReplacingCharactersInRange(range, withString: string)
let updatedTextString : NSString = PartialFormatter().formatPartial(candidateString as String)
print(updatedTextString)
textField.text = updatedTextString
}
return true
}

关于ios - UITextField shouldChangeCharactersInRange 没有检测到第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36026247/

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