iOS处理金额样式,金额输入框条件限制

金额三位增加一个逗号


- (NSString*)dealMoneyString

{

NSRange range = [selfrangeOfString:@"."];

NSMutableString *string ;

if(range.location!=NSNotFound) {

string = [NSMutableStringstringWithString:[[NSString stringWithFormat:@"%@000",self] substringToIndex:range.location+3]];//保存两位小数,不能直接用%.2f,因为默认会四舍五入.

}else

{

string = [NSMutableString stringWithString:[NSString stringWithFormat:@"%.2f",[selfdoubleValue]]];

}

NSRange range2 =[string rangeOfString:@"."];

if(range2.location>3) {

for(NSInteger i = range2.location-3; i >0; i -=3) {

[string insertString:@","atIndex:i];

}

}

returnstring;

}

这是我写的NSString的一个分类里面的实例方法.得到金额字符串直接调用即可.

金额输入框增加输入限制


- (instancetype)init

{

if(self= [superinit]) {

[self addRules];

}

return self;

}

- (instancetype)initWithFrame:(CGRect)frame

{

self= [super initWithFrame:frame];

if(self) {

[self addRules];

}

return self;

}

- (void)addRules

{

[selfaddTarget:selfaction:@selector(checkInput)forControlEvents:UIControlEventEditingChanged];

self.keyboardType=UIKeyboardTypeDecimalPad;

}

- (void)checkInput

{

if([self.text hasPrefix:@"00"]) { //不能已00开头

self.text= [self.text substringToIndex:1];

}

if([self.text hasPrefix:@"."]) { //不能以小数点开头

self.text= [self.text substringToIndex:0];

}

NSRange range = [self.text rangeOfString:@"."];

if(range.location!=NSNotFound) {

//不能输入多个小数点

if([[self.text substringFromIndex:range.location+1]rangeOfString:@"."].location!=NSNotFound) {

self.text= [self.text substringToIndex:self.text.length-1];

}

//最多输入两位小数

if(self.text.length>= range.location+ range.length+3) {

self.text= [self.text substringToIndex:range.location+3];

}

}elseif(self.text.length>=9) { //金额小数点前不能超过九位

self.text= [self.text substringToIndex:9];

}

}

这是一个父类TextField,用到金额处理的输入框继承即可.

做iOS开发快两年了,一直是个伸手党.自身提升也不是很大,所以最近闲暇打算整理下自己平时写到的一些工具类.这些可能网络上已经有过了,写的不好请大神轻喷,如果各位在使用过程遇到bug,欢迎留言.

初次写文章,真是有点羞涩呢! O(∩_∩)O

你可能感兴趣的:(iOS处理金额样式,金额输入框条件限制)