如何在textField输入时限制其输入的内容

//为textfield 添加方法 在其输入值改变时触发


[salePrice.tf addTarget:self action:@selector(textFieldDidChange:) forControlEvents:(UIControlEventEditingChanged)];

//在textfield值改变的同时 对其值进行判断 是否显示

  • (void)textFieldDidChange:(id) sender {

if ([sender isEqual:salePrice.tf])

{

if ([salePrice.tf.text isEqualToString:@""]||salePrice.tf.text.length == 0){

}else{

salePrice.tf.text = [self checkOriginalPrice:salePrice.tf.text];

}

}

}



-(NSString *)checkOriginalPrice:(NSString *)price

{

//只允许输入十个字符 后面则不显示

if (price.length > 10) {

price = [price substringToIndex:10];

}

else

{

//不能以"."开头

if ([price hasPrefix:@"."]) {

price = @"";

}

//判断是不是以0开头

if ([price hasPrefix:@"0"]) {

if ([price length]>=2) {

NSRange range = NSMakeRange(1, 1);

if ([[price substringWithRange:range] isEqualToString:@"."]) {

}

else

{

price = [price substringFromIndex:1];

}

}

}

NSRange range3 = [price rangeOfString:@"."];

if (range3.length>0)

{

NSArray *priceArr = [price componentsSeparatedByString:@"."];

if ([priceArr count]>2) {

//有两个. 的时候只取前面的.

price = [price substringToIndex:([priceArr[0] length]+[priceArr[1] length]+1)];

}

else if ([priceArr count] == 2)

{

//如果只有一个点保留 小数点后两位

price = [price substringToIndex:([priceArr[0] length]+([priceArr[1] length]>2?2:[priceArr[1] length])+1)];

}

}

}

return price;

}

//这个是一个价格输入框的限制条件 不允许以"."开头 若输入类似01 02则自动忽略0 并且保留小数点后两位 无法输入 两个 "."这样一个限制

你可能感兴趣的:(如何在textField输入时限制其输入的内容)