使用UITextField限制輸入金額是正確小數(shù)
要判斷輸入金額為正確金額的方法有兩個(gè),一個(gè)是用正則表達(dá)式,另一個(gè)就是用textfield的代理方法
有時(shí)候難免遇到這樣的需求,不符合規(guī)則的金額就不讓輸入時(shí),那用這種方法比較合理
如果設(shè)置輸入鍵盤(pán)為Decimal Pad時(shí),輸入為數(shù)字和小數(shù)點(diǎn);如果設(shè)置鍵盤(pán)為Number Pad時(shí),輸入為純數(shù)字
非以上情況時(shí),那要判斷輸入時(shí)是否為合理輸入,如代碼里
(single >='0' && single<='9') || single=='.'
如果本身僅僅是輸入數(shù)字或者小數(shù)點(diǎn)而已,那么可以去掉這個(gè)判斷條件
下面這個(gè)限制輸入金額限制得很死:
1.要求用戶(hù)輸入首位不能為小數(shù)點(diǎn);
2.小數(shù)點(diǎn)后不超過(guò)兩位,小數(shù)點(diǎn)無(wú)法輸入超過(guò)一個(gè);
3.如果首位為0,后面僅能輸入小數(shù)點(diǎn)
4.輸入金額不超過(guò)11位
這個(gè)輸入首位不能為0時(shí),可以在限制首位不能為“.”的地方加上,可以根據(jù)自己需要修改.
if(single == '.'){
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
但這個(gè)金額能輸入0.00之類(lèi)的,輸入需要的話(huà)還得在發(fā)生請(qǐng)求數(shù)據(jù)錢(qián)判斷空和輸入最低金額允許,不符合時(shí)就return;
限制如下:
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField.text.length > ) {
return range.location < ;
}else{
BOOL isHaveDian = YES;
if ([textField.text rangeOfString:@"."].location==NSNotFound) {
isHaveDian=NO;
}
if ([string length]>)
{
unichar single=[string characterAtIndex:];//當(dāng)前輸入的字符
if ((single >='' && single<='') || single=='.')//數(shù)據(jù)格式正確
{
//首字母不能為小數(shù)點(diǎn)
if([textField.text length]==){
if(single == '.'){
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
}
if([textField.text length]== && [textField.text isEqualToString:@""]){
if(single != '.'){
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
}
if (single=='.')
{
if(!isHaveDian)//text中還沒(méi)有小數(shù)點(diǎn)
{
isHaveDian=YES;
return YES;
}else
{
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
}
else
{
if (isHaveDian)//存在小數(shù)點(diǎn)
{
//判斷小數(shù)點(diǎn)的位數(shù)
NSRange ran=[textField.text rangeOfString:@"."];
NSInteger tt=range.location-ran.location;
if (tt <= ){
return YES;
}else{
return NO;
}
}
else
{
return YES;
}
}
}else{//輸入的數(shù)據(jù)格式不正確
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
}
else
{
return YES;
}
}
}
以上所述是小編給大家介紹的以上所述是小編給大家介紹的使用UITextField限制輸入金額是正確小數(shù)的相關(guān)知識(shí),希望對(duì)大家
有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
android連續(xù)拖動(dòng)導(dǎo)致掛起的解決方法
本文給大家分享的是在安卓的項(xiàng)目開(kāi)發(fā)中遇到連續(xù)拖動(dòng)對(duì)象,導(dǎo)致掛起的問(wèn)題的解決方法,也是經(jīng)過(guò)很多網(wǎng)友的提示,最終才找到解決方法,這里記錄一下,分享給大家。2015-05-05
Flutter路由的跳轉(zhuǎn)、動(dòng)畫(huà)和傳參詳解(最簡(jiǎn)單)
這篇文章主要給大家介紹了關(guān)于Flutter路由的跳轉(zhuǎn)、動(dòng)畫(huà)和傳參的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01
Android Material設(shè)計(jì)中列表和卡片的創(chuàng)建方法解析
這篇文章主要介紹了Android Material設(shè)計(jì)中列表和卡片的創(chuàng)建方法解析,列表和卡片是Material Design視圖中的重要部分,需要的朋友可以參考下2016-04-04
android的got表HOOK實(shí)現(xiàn)代碼
對(duì)于android的so文件的hook根據(jù)ELF文件特性分為:Got表hook、Sym表hook和inline hook等。今天通過(guò)本文給大家介紹android HOOK實(shí)現(xiàn)got表的實(shí)例代碼,需要的朋友參考下吧2021-08-08
android利用handler實(shí)現(xiàn)倒計(jì)時(shí)功能
這篇文章主要為大家詳細(xì)介紹了android利用handler實(shí)現(xiàn)倒計(jì)時(shí)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11
Android消息通知欄的實(shí)現(xiàn)方法介紹
本篇文章是對(duì)Android消息通知欄的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
android開(kāi)發(fā)基礎(chǔ)教程—打電話(huà)發(fā)短信
打電話(huà)發(fā)短信的功能已經(jīng)離不開(kāi)我們的生活了,記下來(lái)介紹打電話(huà)發(fā)短信的具體實(shí)現(xiàn)代碼,感興趣的朋友可以了解下2013-01-01

