iOS开发 -限制textFiled只输入两位小数

主要是使用此函数:

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

return true

}

返回值是true 表示允许修改,false 表示不允许修改 ,这样就可以限制它的内容输入了。

第一步理解函数:每次输入的时候:

  range 包含当前输入字符的位置(在字符串中的位置,类似数组元素在数组中的位置)和长度

  replacementString 表示当前输入的字符

第二步获取textField内的字符串:

函数内: let newString = (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string) 

就是把每次输入的字符跟之前textField 里的内容拼接起来,获得输入后的字符串

a: 特殊情况: 当第一次输入“.”的时候,不再允许输入:

if newString.hasPrefix(".") {

return false

}

b:一般情况:

else {

var flag = 0

let limited = 2

for var i = newString.characters.count - 1 ; i > 0; i-- {

if (newString as NSString).substringWithRange(NSRange(location: i, length: 1)) == "." {

if flag > limited {

return false

}

break

}

flag++

}

return true

}

从后向前循环找“.” 没找到就使状态标志位加1,找到的话刚好就是flag 值为3,返回false 不再能输入了

解释: 当输入的时候,newString实际上得到的是含有三个小数的字符串,也就是相当于循环了三次,flag的值就为3了

附录整的代码:

iOS开发 -限制textFiled只输入两位小数_第1张图片






   

你可能感兴趣的:(iOS开发 -限制textFiled只输入两位小数)