iOS textField 限制输入
期望效果是 用户输入的数字只能是小数点后面两位 例: 50.65
屏幕快照 2016-03-26 上午11.35.20.png跟微信QQ红包似的,小数点后最多有两位
并且输入的合法性,有且仅有一个小数点
设置 textfield 的代理.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; {
// 判断这个 textfield 是不是你想要做限制的那个 textField
if (textField == self.moneyCount)
{
NSString *updatedText = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSArray *stringsArray = [updatedText componentsSeparatedByString:@"."];
if (stringsArray.count > 0)
{
NSString *dollarAmount = stringsArray[0];
// 小数点前面最多多少位
if (dollarAmount.length > 11)
return NO;
}
if (stringsArray.count > 1)
{
NSString *centAmount = stringsArray[1];
// 小数点后限制的位数
if (centAmount.length > 2)
return NO;
}
if (stringsArray.count > 2)
return NO;
// 限制的总个数, 一共7位: 小数点也在计算中 6666.12
if (textField.text.length < 14) {
NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789."] invertedSet];
NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
return [string isEqualToString:filtered];
}
else
{
if (range.length > 0)
{
return true;
}
else{
return false;
}
}
}
return true;
}
网友评论