2019独角兽企业重金招聘Python工程师标准>>>
直接通过UITextField的协议里面的一个方法就能直接实现,封装一个,下回好用。
@protocol NumTextFieldDelegate
- (void)greateThanMaxNum; //当大于最大值时触发@end@interface SelfTextField : UITextField@property (nonatomic, assign)float maxNum; //限制的最大数字 默认99999999999
@property (nonatomic, weak)id
@implementation SelfTextField- (instancetype)initWithFrame:(CGRect)frame
{self = [super initWithFrame:frame];if (self) {_maxNum = 99999999999;self.delegate = self;self.keyboardType = UIKeyboardTypeDecimalPad;}return self;
}//调用这个方法即可
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {NSString *amountText &#61; textField.text;NSString *regStr &#61; &#64;"^([1-9][\\d]{0,100}|0)(\\.[\\d]{0,1})?$";NSPredicate *predicate &#61; [NSPredicate predicateWithFormat:&#64;"SELF MATCHES %&#64;", regStr];BOOL match &#61; [predicate evaluateWithObject:amountText];if ([string isEqualToString:&#64;""])return YES;NSString *tmpStr &#61; [amountText stringByAppendingString:string];NSString *numStr &#61; [[tmpStr componentsSeparatedByString:&#64;"."] firstObject];float amount &#61; [numStr floatValue];if (([amountText floatValue] &#61;&#61; _maxNum) && (![string isEqualToString:&#64;""])){return NO;}BOOL result &#61; [amountText isEqualToString:&#64;""] ? YES : (match && ((amount <&#61; _maxNum) || [string isEqualToString:&#64;"."]));if (result) {NSString * num &#61; [NSString stringWithFormat:&#64;"%&#64;%&#64;",textField.text,string];result &#61; [num floatValue] <&#61; _maxNum ?YES:NO;}if (_numDelegate && [_numDelegate respondsToSelector:&#64;selector(greateThanMaxNum)] && !result) {[_numDelegate greateThanMaxNum];}return result;
}-(void)dealloc
{self.delegate &#61; nil;
}