gpt4 book ai didi

ios - Swift 文本字段结合了两个功能

转载 作者:行者123 更新时间:2023-11-30 12:41:21 25 4
gpt4 key购买 nike

您好,我的文本字段函数有以下代码,它只允许数字、点,并且总共不超过 7 个字符:

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

let length = ((textField.text?.characters.count)! + string.characters.count)
if (length > 7)
{
return false
}
else
{
// return true
let inverseSet = NSCharacterSet(charactersIn:".0123456789").inverted
let components = string.components(separatedBy: inverseSet)
let filtered = components.joined(separator: "")
return string == filtered && true
}
}

现在我在这个网站上发现了另一段很好的代码,它只允许一个小数字符:

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


if(string == "." ){
let countdots = textField.text!.components(separatedBy: ".").count - 1

if countdots > 0 && string == "."
{
return false
}
}
return true

}

我正在思考如何将这些东西组合成一个函数?不断出现错误..也许有人可以提出建议?

最佳答案

可以使用基本控制流(else if)将它们组合起来。

顺便说一句,return string == Filtered && true 行写得不好。如果 string == 已过滤,则返回 true;如果 string != 已过滤,则返回 false。因此,&& 子句是一个无用的补充。将其重写为返回字符串==过滤

考虑到这一点,以下是清理后的函数:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let length = ((textField.text?.characters.count)! + string.characters.count)
if (length > 7) {
return false
}
else if(string == "." ) {
let countdots = textField.text!.components(separatedBy: ".").count - 1
if countdots > 0 && string == "." {
return false
}
return true
}
else
{
// return true if the string is equivalent after removing all non-numbers (and therefore consisted of only numbers)
let inverseSet = NSCharacterSet(charactersIn:".0123456789").inverted
let components = string.components(separatedBy: inverseSet)
let filtered = components.joined(separator: "")
return string == filtered
}
}

关于ios - Swift 文本字段结合了两个功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42193665/

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