Objective c textfield验证方法obj c
我有一个带有两个文本字段和一个按钮的视图 在“clickOnDoneButton”功能中,我必须执行以下功能:我必须验证插入第一个文本字段的pin是否与插入第二个文本字段的pin相同。 我必须用“checkValidityPin”功能验证pin是否正确,我无法正确实现它。 要实现的逻辑是:我检查用checkValidityPin输入的第一个“pin”,如果正确,我用第二个“pin”进行检查,该“pin”必须相同 我想我迷失在无法继续下去的功能中了Objective c textfield验证方法obj c,objective-c,numbers,uitextfield,Objective C,Numbers,Uitextfield,我有一个带有两个文本字段和一个按钮的视图 在“clickOnDoneButton”功能中,我必须执行以下功能:我必须验证插入第一个文本字段的pin是否与插入第二个文本字段的pin相同。 我必须用“checkValidityPin”功能验证pin是否正确,我无法正确实现它。 要实现的逻辑是:我检查用checkValidityPin输入的第一个“pin”,如果正确,我用第二个“pin”进行检查,该“pin”必须相同 我想我迷失在无法继续下去的功能中了 @property (nonatomic
@property (nonatomic, strong) id delegate;
@property (nonatomic, weak) IBOutlet UIButton *confirmButton;
@property (weak, nonatomic) IBOutlet InputTextView *insertPin;
@property (weak, nonatomic) IBOutlet InputTextView *verifyPin;
@property (nonatomic, strong) NSString* stringInserted;
- (IBAction) clickOnDoneButton:(id)sender;
- (IBAction) clickOnDoneButton:(id)sender{
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
NSString * errorMessage = @"";
if(!self.insertPin || [self.insertPin isEqual:[NSString string]]) {
self.insertPin = self.stringInserted;
// [self.insertPin redrawWithInputLength:0];
// self.titleLabel.text = NSLocalizedString(@"INSERT_NEW_PIN", nil);
// [self setTextAnimated:NSLocalizedString(@"INSERT_NEW_PIN", nil)];
// self.keyboard.confirButton.enabled = NO;
self.stringInserted = [NSString string];
} else if(!self.verifyPin || [self.verifyPin isEqual:[NSString string]]) {
if (![self.stringInserted isEqualToString:self.insertPin]){
if([self checkValidityPin:self.stringInserted]){
self.verifyPin = _stringInserted;
// [self.fieldView redrawWithInputLength:0];
// self.titleLabel.text = NSLocalizedString(@"REINSERT_NEW_PIN", nil);
// [self setTextAnimated:NSLocalizedString(@"REINSERT_NEW_PIN", nil)];
// self.keyboard.confirButton.enabled = NO;
self.stringInserted = [NSString string];
NSLog(@"TEST4");
}
else{
errorMessage = NSLocalizedString(@"WRONG_PIN_FORMAT", nil);
NSLog(@"TEST2");
}
} else {
errorMessage = NSLocalizedString(@"NEW_PIN_EQUALS_OLD", nil);
NSLog(@"TEST3");
}
}
else if([self.verifyPin isEqual:self.stringInserted]) {
NSLog(@"TEST");
}
else {
// [self.fieldView redrawWithInputLength:0];
self.stringInserted = [NSString string];
self.insertPin = nil;
self.verifyPin = nil;
NSLog(@"TEST1");
// [self setTextAnimated:NSLocalizedString(@"INSERT_OLD_PIN", nil)];
// self.keyboard.confirButton.enabled = NO;
errorMessage = NSLocalizedString(@"PIN_NOT_EQUALS", nil);
}
//Show Error
// if([errorMessage length]>0){
// [self showError:errorMessage];
// }
}];
}
-(BOOL) checkValidityPin:(NSString*)pin{
NSString *regex1 = @"^(01234|12345|23456|34567|45678|56789)$";
NSString *regex2 = @"^(98765|87654|76543|65432|54321|43210)$";
NSString *regex3 = @"^([0-9])\\1*$";
BOOL testPassed1 = [PRUtility validateRegularExpression:regex1 forString:pin];
BOOL testPassed2 = [PRUtility validateRegularExpression:regex2 forString:pin];
BOOL testPassed3 = [PRUtility validateRegularExpression:regex3 forString:pin];
return !(testPassed1 || testPassed2 || testPassed3);
}
如果只写代码,很容易迷路。试着先用“普通语言”写,然后填写代码 例如:
- (IBAction)clickOnDoneButton:(id)sender {
// 1. get each entered string
NSString *insertPinString = [_insertPin text];
NSString *verifyPinString = [_verifyPin text];
// 2. is the entered pin empty?
if ([insertPinString length] == 0) {
// inform user he didn't enter a pin
// update error label or show alert, whatever
NSLog(@"No Pin Entered");
// don't bother with anything else
return;
}
// 3. are both entered strings the same?
if (![insertPinString isEqualToString:verifyPinString]) {
// inform user the pins don't match
// update error label or show alert, whatever
// probably clear both fields
_insertPin.text = _verifyPin.text = @"";
NSLog(@"Pin Mismatch");
// don't bother with anything else
return;
}
// 4. strings are the same, so validate entered pin
BOOL bValid = [self checkValidityPin:insertPinString];
// 5. if invalid pin entered
if (!bValid) {
// inform user it's an invalid pin format
// update error label or show alert, whatever
// probably clear both fields
_insertPin.text = _verifyPin.text = @"";
NSLog(@"Invalid Pin");
// don't bother with anything else
return;
}
// 6. pins match and have been validated so we can proceed with next step
NSLog(@"Successful pin entry!");
}
如果只写代码,很容易迷路。试着先用“普通语言”写,然后填写代码 例如:
- (IBAction)clickOnDoneButton:(id)sender {
// 1. get each entered string
NSString *insertPinString = [_insertPin text];
NSString *verifyPinString = [_verifyPin text];
// 2. is the entered pin empty?
if ([insertPinString length] == 0) {
// inform user he didn't enter a pin
// update error label or show alert, whatever
NSLog(@"No Pin Entered");
// don't bother with anything else
return;
}
// 3. are both entered strings the same?
if (![insertPinString isEqualToString:verifyPinString]) {
// inform user the pins don't match
// update error label or show alert, whatever
// probably clear both fields
_insertPin.text = _verifyPin.text = @"";
NSLog(@"Pin Mismatch");
// don't bother with anything else
return;
}
// 4. strings are the same, so validate entered pin
BOOL bValid = [self checkValidityPin:insertPinString];
// 5. if invalid pin entered
if (!bValid) {
// inform user it's an invalid pin format
// update error label or show alert, whatever
// probably clear both fields
_insertPin.text = _verifyPin.text = @"";
NSLog(@"Invalid Pin");
// don't bother with anything else
return;
}
// 6. pins match and have been validated so we can proceed with next step
NSLog(@"Successful pin entry!");
}