美文网首页
iOS开发 -限制textFiled只输入两位小数

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

作者: 骑着蜗牛追大象 | 来源:发表于2016-01-31 12:12 被阅读744次

    主要是使用此函数:

    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只输入两位小数

          本文链接:https://www.haomeiwen.com/subject/ocwnhttx.html