1
最近项目中需要集成 微信 支付宝 支付 签名什么的都是后台做 所以对于前段的我们来说容易了很多了 但是在实现支付逻辑的时候 公司的规定是 最小充值金额为0.1元 在界面上用的是UItextFile 那么问题就来了 问了度娘 看了很多同事写的 都感觉 很麻烦 不哈理解 于是自己写了个 感觉容易理解 就贴出来
2 使用的就是UItextFile代理里的这个方法
@protocol UITextFieldDelegate <NSObject>
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; // return NO to not change text
3 决解方法 就是在项目中
//设置最小金额为0.1元
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSString *str = [NSString stringWithFormat:@"%@%@",textField.text,string];
// 这个地方 你自己想保留几位 小数就取几位 这里的思路大家 应该都明白 (一个数-需要保留的位数数 如果大于0.0 那么肯定超过了 你设置的最小金额 12.0098 -12.00>0.0)
NSString * str1 = [NSString stringWithFormat:@"%.1f",[str floatValue]];
if ([str floatValue]- [str1 floatValue] > 0.0) {
return NO;
}
if (![Tools isAccuracyBranchNine:str]) {
return NO;
}
//这里限制了 最大 长度
if (range.location>8) {
return NO;
}
return YES;
}
//上面方法用到的一个代码块 正则验证 是不是 最多只有一位小数
//最多带一位小数的数字
+ (BOOL)isAccuracyBranchNine:(NSString *)str
{
//这里是判断是不是nil
//if( [self isBlankString: str] ){
// return NO;
// }
NSString *ZEROTONINE = @"^([0-9]*)+(.[1-9]{0,1})?$";
NSPredicate *regextest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", ZEROTONINE];
if ([regextest evaluateWithObject:str] == YES)
{
NSLog(@"是最多最多带一位小数的数字");
return YES;
}
else
{
NSLog(@"不是最多最多带一位小数的数字");
return NO;
}
}
最后在判断下充值金额 不能为0
4
在iOS 10 中,UITextField新增了textContentType字段,是UITextContentType类型,它是一个枚举,作用是可以指定输入框的类型,以便系统可以分析出用户的语义.是电话类型就建议一些电话,是地址类型就建议一些地址.可以在#import <UIKit/UITextInputTraits.h>文件中,查看textContentType字段,有以下可以选择的类型:
UIKIT_EXTERN UITextContentType const UITextContentTypeName NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeNamePrefix NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeGivenName NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeMiddleName NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeFamilyName NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeNameSuffix NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeNickname NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeJobTitle NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeOrganizationName NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeLocation NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeFullStreetAddress NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeStreetAddressLine1 NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeStreetAddressLine2 NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeAddressCity NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeAddressState NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeAddressCityAndState NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeSublocality NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeCountryName NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypePostalCode NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeTelephoneNumber NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeEmailAddress NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeURL NS_AVAILABLE_IOS(10_0);
UIKIT_EXTERN UITextContentType const UITextContentTypeCreditCardNumber NS_AVAILABLE_IOS(10_0);