我希望用户在UITextfield中键入29位数并取两位小数,因此uitextfield的总长度应为32。
由于
答案 0 :(得分:2)
使用textField委托方法来限制输入值,每当更新/更改文本字段文本时都会调用它。
func textField(_ textField:UITextField,shouldChangeCharactersIn range:NSRange,replacementString string:String) - >布尔
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
{
let newString = NSString(string: textField.text!).replacingCharacters(in: range, with: string)
if newString.characters.count > 32 { //restrict input upto 32 characters
return false
} else {
let characterset = CharacterSet(charactersIn: "0123456789.") //0-9 digit and . is allowed
if newString.rangeOfCharacter(from: characterset.inverted) == nil {
let fullNumberArray = newString.components(separatedBy: ".") //Convert string into array
if fullNumberArray.count > 2 { // more than 2 . exist
return false
}
else if fullNumberArray.count == 2 { // Fractional part exist
if fullNumberArray[0].characters.count <= 29 && fullNumberArray[1].characters.count <= 2 {
return true
} }else {
// Only No decimal point exist , numeric digits only entered so far
if fullNumberArray[0].characters.count <= 29 {
return true
}
}
}
}
return false
}
注意强> 上面的代码允许输入最多29个数字和最多2个小数位数。用户可以输入不带小数的数字。如果你有一个限制只允许32个字符,并且有最小和最大29个数字没有分数范围,那么一些条件将会减少。
答案 1 :(得分:0)
if let text1 = textField1.text,
let text2 = textField2.text,
text1.characters.count <= 29 &&
text1.characters.count + text2.characters.count <= 32 {
}
这应该做的工作
答案 2 :(得分:0)
您可以使用
当用户按下键盘上的任何字符时,
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)范围 replacementString:(NSString *)string
UITextField
的委托。然后在委托中,您可以检查用户按下的字符数,如果用户按下字符长度为32,则可以验证其他输入文本是否包含32位或2位小数。
此外,您可以制定自己不同的逻辑。
答案 3 :(得分:0)
在textField委托方法中,限制输入字符的数量。下面的示例将字符数限制为32。注意,应确保输入字符串数大于0,以允许删除输入字符。
extension TableViewCell: UITextFieldDelegate {
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if string.count > 0 {
return (textField.text?.count ?? 0) < 32
}
return true
}