iOS UITextField 只能输入数字和小数点,只能有两位小数
2016-01-27 11:25
621 查看
#pragma mark - UITextField delegate
//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)showError:(NSString *)errorString
{
[(AppDelegate *)[UIApplication sharedApplication].delegate showErrorView:errorString];
[NSTimer scheduledTimerWithTimeInterval:2.0f target:self selector:@selector(removeErrorView2) userInfo:nil repeats:NO];
[self.moneyTf resignFirstResponder];
}
//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)showError:(NSString *)errorString
{
[(AppDelegate *)[UIApplication sharedApplication].delegate showErrorView:errorString];
[NSTimer scheduledTimerWithTimeInterval:2.0f target:self selector:@selector(removeErrorView2) userInfo:nil repeats:NO];
[self.moneyTf resignFirstResponder];
}
相关文章推荐
- request对象的几种用法
- define,require的基本用法
- GPUImage的简单使用
- 钥匙串保存uuid:生成plist的问题
- Java中的StringBuffer与StringBuilder及正则表达式
- IOS 改变UISearchBar的背景色
- 设置UITableView单元格分割线长度
- emulator: ERROR: x86 emulation currently requires hardware acceleration
- UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
- AsyncTask简介(一) 基本概念和用法
- iOS开发笔记--使用UITextField自动格式化银行卡号
- UIImageView详解
- iOS开发笔记--UITableViewCell的选中时的颜色及tableViewCell的selecte与deselecte
- iOS开发笔记--iOS组件之UILabel
- Qt使用教程之创建Qt Quick应用程序(二)
- iOS开发笔记--如何去掉UItableview header(footer)view黏性(sticky)
- [iOS 技术]相对布局 获取 UITableView中内容的高度,设置UITableView中内容的高度与UITableView高度相同
- iOS开发笔记--异步加载UIImageView----AsyImageView
- iOS开发笔记--解决UITableView中Cell重用机制导致内容出错的方法总结
- iOS给UIView添加延展使用与Button、uiview。。。