代码才是硬道理!
#import "ViewController.h"
@interface ViewController ()<UITextFieldDelegate>
{
BOOL isHaveDian;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 200, 50)];
textField.center = self.view.center;
textField.delegate = self;
textField.backgroundColor = [UIColor yellowColor];
//观察textField.text变化
[textField addTarget:self action:@selector(textFieldDidChanged:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:textField];
}
//去除中文
- (void)textFieldDidChanged:(UITextField *)textField {
NSString *string = textField.text;
for (NSInteger index = 0; index < string.length; index ++) {
NSRange range = NSMakeRange(index, 1);
NSRange range2 = NSMakeRange(0, index);
NSString *subString = [string substringWithRange:range];
const char *cString = [subString UTF8String];
if (strlen(cString) == 3)
{
string = [string substringWithRange:range2];//截取范围类的字符串
textField.text = string;
}
}
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if ([textField.text rangeOfString:@"."].location == NSNotFound) {
isHaveDian = NO;
}
if ([string length] > 0) {
unichar single = [string characterAtIndex:0];//当前输入的字符
if ((single >= '0' && single <= '9') || single == '.') {//数据格式正确
//首字母不能为0和小数点
if([textField.text length] == 0){
if(single == '.') {
// [self showError:@"亲,第一个数字不能为小数点"];
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
if (single == '0') {
// [self showError:@"亲,第一个数字不能为0"];
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
}
//输入的字符是否是小数点
if (single == '.') {
if(!isHaveDian)//text中还没有小数点
{
isHaveDian = YES;
return YES;
}else{
// [self showError:@"亲,您已经输入过小数点了"];
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
}else{
if (isHaveDian) {//存在小数点
//判断小数点的位数
NSRange ran = [textField.text rangeOfString:@"."];
if (range.location - ran.location <= 2) {
return YES;
}else{
// [self showError:@"亲,您最多输入两位小数"];
return NO;
}
}else{
return YES;
}
}
}else{//输入的数据格式不正确
// [self showError:@"亲,您输入的格式不正确"];
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
}
else
{
return YES;
}
}
//回收键盘
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[self.view endEditing:YES];
}
//点击ruturn回收键盘
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
@end
新人,方法肯定有所不足,望大神不吝赐教。