- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSLog(@"text = %@", textField.text);
NSLog(@"string = %@", string);
NSLog(@"range = %@", NSStringFromRange(range));
}
// 輸入時間的數(shù)據(jù)
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}
// 刪除時間的數(shù)據(jù)
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}
相信通過數(shù)據(jù)大家都會知道其中的規(guī)律厅翔。
接下來我們實現(xiàn)一個文本框只能輸入0-9又活,其他的字符限制不讓輸入苔咪,并且首字母不能輸入0。那肯定有人會說柳骄,直接使用數(shù)字幾盤就完事了团赏,簡單方便。但是如果有小數(shù)點的輸入呢耐薯?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')) {//數(shù)據(jù)格式正確
//首字母不能為0和小數(shù)點
if(textField.text.length == 0) {
if (single == '0') { // 第一個數(shù)字不能為0
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
}
} else {//輸入的數(shù)據(jù)格式不正確
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
} else { // 表示刪除
return YES;
}
return YES;
}
此時運行程序评汰, 你就會驚喜的發(fā)現(xiàn)咱們想要的效果了。
又不懂的地方可以第一時間問我痢虹。