- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSLog(@"text = %@", textField.text);
NSLog(@"string = %@", string);
NSLog(@"range = %@", NSStringFromRange(range));
}
// 输入时间的数据
2016-10-27 13:52:41.983 测试[1670:383188] text =
2016-10-27 13:52:41.984 测试[1670:383188] string = Q
2016-10-27 13:52:41.985 测试[1670:383188] range = {0, 0}
2016-10-27 13:53:08.784 测试[1670:383188] text = Q
2016-10-27 13:53:08.785 测试[1670:383188] string = w
2016-10-27 13:53:08.785 测试[1670:383188] range = {1, 0}
2016-10-27 13:53:15.386 测试[1670:383188] text = Qw
2016-10-27 13:53:15.386 测试[1670:383188] string = e
2016-10-27 13:53:15.387 测试[1670:383188] range = {2, 0}
// 删除时间的数据
2016-10-27 14:14:49.446 测试[1670:383188] text = Qwe
2016-10-27 14:14:49.447 测试[1670:383188] string =
2016-10-27 14:14:49.447 测试[1670:383188] range = {2, 1}
2016-10-27 14:14:49.712 测试[1670:383188] text = Qw
2016-10-27 14:14:49.712 测试[1670:383188] string =
2016-10-27 14:14:49.713 测试[1670:383188] range = {1, 1}
2016-10-27 14:14:50.762 测试[1670:383188] text = Q
2016-10-27 14:14:50.762 测试[1670:383188] string =
2016-10-27 14:14:50.763 测试[1670:383188] range = {0, 1}
相信通过数据大家都会知道其中的规律。
接下来我们实现一个文本框只能输入0-9,其他的字符限制不让输入,并且首字母不能输入0。那肯定有人会说,直接使用数字几盘就完事了,简单方便。但是如果有小数点的输入呢?ios 并没有提供这样的键盘。怎么办, 要么使用其他的键盘,要么自定义键盘。用其他的键盘就涉及到了文本限制输入了。
靠,说了一大堆废话,我们来开始干点正事吧。。😄
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSLog(@"string = %@", string);
NSLog(@"range = %@", NSStringFromRange(range));
if (string.length > 0) { // 表示输入
unichar single = [string characterAtIndex:0];//当前输入的字符
if ((single >= '0' && single <= '9')) {//数据格式正确
//首字母不能为0和小数点
if(textField.text.length == 0) {
if (single == '0') { // 第一个数字不能为0
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
}
} else {//输入的数据格式不正确
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
} else { // 表示删除
return YES;
}
return YES;
}
此时运行程序, 你就会惊喜的发现咱们想要的效果了。
又不懂的地方可以第一时间问我。