UITextField 的限制輸入金額(可為小數的正確金額),uitextfield小數

來源:互聯網
上載者:User

UITextField 的限制輸入金額(可為小數的正確金額),uitextfield小數

要判斷輸入金額為正確金額的方法有兩個,一個是用Regex,另一個就是用textfield的代理方法

有時候難免遇到這樣的需求,不符合規則的金額就不讓輸入時,那用這種方法比較合理

如果設定輸入鍵盤為Decimal Pad時,輸入為數字和小數點;如果設定鍵盤為Number Pad時,輸入為純數字
非以上情況時,那要判斷輸入時是否為合理輸入,如代碼裡

(single >='0' && single<='9') || single=='.'

如果本身僅僅是輸入數字或者小數點而已,那麼可以去掉這個判斷條件

下面這個限制輸入金額限制得很死:

1.要求使用者輸入首位不能為小數點;

2.小數點後不超過兩位,小數點無法輸入超過一個;

3.如果首位為0,後面僅能輸入小數點

4.輸入金額不超過11位 

這個輸入首位不能為0時,可以在限制首位不能為“.”的地方加上,可以根據自己需要修改.

if(single == '.'){  [textField.text stringByReplacingCharactersInRange:range withString:@""];  return NO;                        }

但這個金額能輸入0.00之類的,輸入需要的話還得在發生請求資料前判斷空值和輸入最低金額允許,不符合時就return;

限制如下:

 1 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 2 { 3     if (textField.text.length > 10) { 4         return range.location < 11; 5     }else{ 6         BOOL isHaveDian = YES; 7         if ([textField.text rangeOfString:@"."].location==NSNotFound) { 8             isHaveDian=NO; 9         }10         if ([string length]>0)11         {12             unichar single=[string characterAtIndex:0];//當前輸入的字元13             14             if ((single >='0' && single<='9') || single=='.')//資料格式正確15             {16                 //首字母不能為小數點17                 if([textField.text length]==0){18                     if(single == '.'){19                         [textField.text stringByReplacingCharactersInRange:range withString:@""];20                         return NO;21                         22                     }23                 }24                 if([textField.text length]==1 && [textField.text isEqualToString:@"0"]){25                     if(single != '.'){26                         [textField.text stringByReplacingCharactersInRange:range withString:@""];27                         return NO;28                         29                     }30                 }31                 if (single=='.')32                 {33                     if(!isHaveDian)//text中還沒有小數點34                     {35                         isHaveDian=YES;36                         return YES;37                     }else38                     {39                         [textField.text stringByReplacingCharactersInRange:range withString:@""];40                         return NO;41                     }42                 }43                 else44                 {45                     if (isHaveDian)//存在小數點46                     {47                         //判斷小數點的位元48                         NSRange ran=[textField.text rangeOfString:@"."];49                         NSInteger tt=range.location-ran.location;50                         if (tt <= 2){51                             return YES;52                         }else{53                             return NO;54                         }55                     }56                     else57                     {58                         return YES;59                     }60                 }61             }else{//輸入的資料格式不正確62                 [textField.text stringByReplacingCharactersInRange:range withString:@""];63                 return NO;64             }65         }66         else67         {68             return YES;69         }70     }71 }

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.