今天要实现一个需求,限制textFiled的只能输入带两位小数的数字,参考网上找到的方法,并加以改进.
首先,自定义一个cell,设置textField的keyBoardtype为 DecimalPad(只能输入数字和小数点的键盘)
然后成为textField的代理并遵守UITextFieldDelegate协议,重写textField的代理方法shouldChangeCharactersInRange
limitNum为限制的小数位数,如设置小数限制位数为2,则textField仅能输入两位小数,且不能以小数点"."开头,也不能输入两个或两个以上的小数点"."代码copy如下
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { var futureStr = textField.text futureStr?.appendContentsOf(string) if futureStr == nil{ futureStr = "" } var flag = -1 var pointIndex = 0 var isSeePoint = false for i in 0..limitNum{
ZCLog("插入的位置\(range.location)")
if range.location < pointIndex{
return true
}
return false
}
}
}
return true
}