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];
}
网友评论