美文网首页
IOS UITextField 显示金额,小数点后面保存两位

IOS UITextField 显示金额,小数点后面保存两位

作者: Albert新荣 | 来源:发表于2019-08-13 22:17 被阅读0次

BaseMoneyTF.h

@interface BaseMoneyTF : UITextField<UITextFieldDelegate>
@end

BaseMoneyTF.m

@implementation BaseMoneyTF
-(instancetype)init{
    self = [super init];
    if (self) {
        self.delegate = self;
        [[NSNotificationCenter defaultCenter]addObserver:self
                                                selector:@selector(textFiledEditChanged:)
                                                    name:UITextFieldTextDidChangeNotification
                                                  object:self];
    }
    return self;
}



- (void)textFiledEditChanged:(NSNotification *)notification
{
   
    if ([notification.object isKindOfClass:[BaseMoneyTF class]])
    {
        NSString *includeStr = @"1234567890";
        NSString *dotString = @".";
        if ([self.text isEqualToString:dotString] ) {
            self.text = @"0.";
        }

        NSString *lastStr = [self.text substringFromIndex:self.text.length-1];
        NSString *fontStr = [self.text substringToIndex:self.text.length-1];
        
        NSString *allowStr = [NSString stringWithFormat:@"%@%@",includeStr,dotString];
        if ([allowStr containsString:lastStr]) {
            if ([fontStr rangeOfString:dotString].location != NSNotFound) {
                //前面字符串有.
                //最后一个字符串是不是.
                if ([lastStr isEqualToString:dotString]) {
                    self.text = fontStr;
                }
                else
                {
                    if (![includeStr containsString:lastStr]) {
                        self.text = fontStr;
                    }
                }
            }
            else
            {
                if ([fontStr isEqualToString:lastStr] && [lastStr isEqualToString:@"0"]) {
                    self.text = fontStr;
                }
                else
                {
                    if ([fontStr isEqualToString:@"0"] && ![lastStr isEqualToString:@"."]) {
                        self.text = lastStr;
                    }
                }
                
            }
            
            if (self.text.length > [self.text rangeOfString:dotString].location+3) {
                self.text = [self.text substringToIndex:[self.text rangeOfString:dotString].location+3];
            }
        }
        else
        {
            self.text = fontStr;
        }
    }
}

-(void)deleteBackward{
    self.text = @"";
}

-(void)dealloc{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}


相关文章

网友评论

      本文标题:IOS UITextField 显示金额,小数点后面保存两位

      本文链接:https://www.haomeiwen.com/subject/dlpijctx.html