輸入控制:
/**
*? textFiled輸入變化的時候
*
*? @param textField
replacementString //鍵盤每次輸入的鍵
*/
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
//控制輸入個數
if (textField.tag == numberTextFieldTag) {
//判斷是否為刪除字符,如果為刪除則讓執行
if (string.length == 0) {
return YES;
}
//獲取輸入框內字符串
NSString *text = textField.text;
//判斷是否有小數點
if ([text rangeOfString:@"."].length) {
//獲取小數點后面字符串長度
if ([text substringFromIndex:[text rangeOfString:@"."].location].length > 2) {
return NO;
}else{
return YES;
}
}else{
return YES;
}
}
return YES;
}
提交時:
NSString *text = self.redPacketNumberTextField.text;
//判斷輸入是否合規
//如果存在"."
if ([text rangeOfString:@"."].location != NSNotFound) {
if ([text hasPrefix:@"."] || [text hasSuffix:@"."]) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:AppLocalizedString(@"Red Packet Amount error") delegate:self cancelButtonTitle:AppLocalizedString(@"OK") otherButtonTitles:nil, nil];
[alert show];
[self.redPacketNumberTextField becomeFirstResponder];
return;
}else{
//如果出現多個"."
NSString *str = [text substringFromIndex:[text rangeOfString:@"."].location + 1];
if ([str rangeOfString:@"."].location != NSNotFound) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:AppLocalizedString(@"Red Packet Amount error") delegate:self cancelButtonTitle:AppLocalizedString(@"OK") otherButtonTitles:nil, nil];
[alert show];
[self.redPacketNumberTextField becomeFirstResponder];
return;
}
//如果0開頭,且小數點前面不止一位
if ([text hasPrefix:@"0"]){
NSString *perfixStr = [text substringWithRange:NSMakeRange(1, 1)];
if (![perfixStr isEqualToString:@"."]) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:AppLocalizedString(@"Red Packet Amount error") delegate:self cancelButtonTitle:AppLocalizedString(@"OK") otherButtonTitles:nil, nil];
[alert show];
[self.redPacketNumberTextField becomeFirstResponder];
return;
}
}
}
}else{
//如果沒有小數點
//如果0開頭
if ([text hasPrefix:@"0"]){
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:AppLocalizedString(@"Red Packet Amount error") delegate:self cancelButtonTitle:AppLocalizedString(@"OK") otherButtonTitles:nil, nil];
[alert show];
[self.redPacketNumberTextField becomeFirstResponder];
return;
}
}