1.username 2.Email 4 텍스트 필드에 봉착
3.Age 4.Password
사용자 이름은 3-25 문자입니다 만이 포함 문자 [a-z0-9]
연령은 1-100 사이 여야합니다.
암호는 4-12 사이의 문자입니다 만 문자 [A-ZA-Z0-9]를 사용
나는 위의 요구 사항
와 텍스트 필드를 제한 할 수있는 방법을사람이 이렇게 저를 도와주세요 ..
귀하의 노력과 배려에 감사드립니다.
1.username 2.Email 4 텍스트 필드에 봉착
3.Age 4.Password
사용자 이름은 3-25 문자입니다 만이 포함 문자 [a-z0-9]
연령은 1-100 사이 여야합니다.
암호는 4-12 사이의 문자입니다 만 문자 [A-ZA-Z0-9]를 사용
나는 위의 요구 사항
와 텍스트 필드를 제한 할 수있는 방법을사람이 이렇게 저를 도와주세요 ..
귀하의 노력과 배려에 감사드립니다.
UITextFieldDelegate
프로토콜의 메서드를 사용하여 필드의 내용을 확인할 수 있습니다. 사용자가 텍스트 필드를 편집 종료 될 때, 당신은 단지 확인
- textField:shouldChangeCharactersInRange:replacementString:
을 첫 번째 경우;
– textFieldShouldEndEditing:
- textFieldShouldReturn:
하거나 사용할 수 있습니다
더 구체적으로, 하나는 사용 두 번째 경우에는 각 키 입력에서 유효성 검사를 수행 할 수 있습니다. 당신은 -[UITextField textField:shouldChangeCharactersInRange:replacementString:]
방법을 구현하여 사용자 유형으로 번호를 확인 할 수
NSString* text = textField.text;
NSUInterger length = [text length];
if (length.....) {
// -- show alert or whatever
return NO;
}
: 그 모든 방법에서
, 당신은 다음과 같이 액세스 할 수있는 인수textField
을받을 수 있습니다. 변경이 이루어지기 전에 전에이 메서드를
이라고 부릅니다. 따라서 사용자 동작의 결과 일 수있는 텍스트를 직접 만들어야합니다. 예 : -(BOOL)textField:(UITextField*)textField: shouldChangeCharactersInRange:(NSRange*)range
replacementString:(NSString*)string;
{
NSString* text = [textField.text stringByReplacingCharactersInRange:range
withString:string];
// text is now the potential string you should check against.
}
귀하가 취한 행동은 귀하의 책임입니다. 몇 가지 예는 다음과 같을 수 있습니다 더 복잡한 번호 확인을 위해 내가 범위 등을 검증하기위한 지원을하고있다가, NSNumberFormatter
을 사용
// Too short?
if ([text length] < 4) ...
// Invalid character?
NSCharacterSet* invalidChars = [[NSCharacterSet alphanumericCharacterSet] invertedSet];
if ([text rangeOfCharacterInSet:invalidChars].location != NSNotFound) ...
.
위의 코드는 오류를 표시합니다. 위치 선언되지 않음 – Prajan
UITextFieldDelegate를 사용하여 원하는대로 할 수 있습니다. - (void)viewDidLoad
방법의 각 필드에 대해 textfield.tag에 다른 값을 할당하고 해당 태그 값을 일치시켜 (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
의 관련 필드를 찾습니다.
#define USERNAME_FIELD_TAG 1
#define PASSWORD_FIELD_TAG 2
#define EMAIL_FIELD_TAG 3
#define AGE_FIELD_TAG 4
#pragma mark - UITextFieldDelegate
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField.tab == USERNAME_FIELD_TAG)
{
if([[NSPredicate predicateWithFormat:@"SELF MATCHES[cd] %@", @"[a-z0-9]{3,35}"] evaluateWithObject:string] == FALSE)
{
textField.text = [textField.text stringByReplacingOccurrencesOfString:string withString:@"" options:NSCaseInsensitiveSearch range:range];
[self selectTextForInput:textField atRange:range];
return NO;
}
}
else if (textField.tab == PASSWORD_FIELD_TAG)
{
if([[NSPredicate predicateWithFormat:@"SELF MATCHES[cd] %@", @"[a-zA-Z0-9]{4,12}"] evaluateWithObject:string] == FALSE)
{
textField.text = [textField.text stringByReplacingOccurrencesOfString:string withString:@"" options:NSCaseInsensitiveSearch range:range];
[self selectTextForInput:textField atRange:range];
return NO;
}
}
else if (textField.tab == EMAIL_FIELD_TAG)
{
if([[NSPredicate predicateWithFormat:@"SELF MATCHES[cd] %@", @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"] evaluateWithObject:string] == FALSE)
{
textField.text = [textField.text stringByReplacingOccurrencesOfString:string withString:@"" options:NSCaseInsensitiveSearch range:range];
[self selectTextForInput:textField atRange:range];
return NO;
}
}
else if (textField.tab == AGE_FIELD_TAG)
{
if([[NSPredicate predicateWithFormat:@"SELF MATCHES[cd] %@", @"[1-100]"] evaluateWithObject:string] == FALSE)
{
textField.text = [textField.text stringByReplacingOccurrencesOfString:string withString:@"" options:NSCaseInsensitiveSearch range:range];
[self selectTextForInput:textField atRange:range];
return NO;
}
}
return YES;
}
// place the cursor at given possition
-(void)selectTextForInput:(UITextField *)input atRange:(NSRange)range {
UITextPosition *start = [input positionFromPosition:[input beginningOfDocument]
offset:range.location];
UITextPosition *end = [input positionFromPosition:start
offset:range.length];
[input setSelectedTextRange:[input textRangeFromPosition:start toPosition:end]];
}
:하지만 username-what에 대해 A-Z와 0-9 만 입력하면됩니까? – Prajan
그것에 대해 'NSRegularExpression'을 사용하십시오. http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSRegularExpression_Class/Reference/Reference.html – sergio