2011-04-20 2 views
0

설문지를 작성하려고하는데 사용자가 1-7의 진술서를 평가해야합니다.텍스트 유효성 검사 - 사용자가 한 번만 번호를 선택할 수 있습니다.

사용자는 UITextFields을 1-7 사이의 값으로 채워서 계산서를 평가합니다.

나는 사용자가 1-7 사이의 값으로 쓸 수 있으며 텍스트 필드 당 하나의 문자 만 쓸 수 있도록 만들었습니다.

내가 지금하고 싶은 것은 사용자가 그 값을 두 번 이상 사용하지 못하게하려는 것이다.

이것은 내가 지금까지 가지고있는 코드입니다.

#define CHARACTERS   @"1234567" 

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
// These are the characters that are ~not~ acceptable 
NSCharacterSet *unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:CHARACTERS] invertedSet]; 

NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 

if (([[string componentsSeparatedByCharactersInSet:unacceptedInput] count] >1) | ([newString length] > 1)) 
return NO; 
else 
return YES; 
} 
+0

사용자가 텍스트 "1"을 입력 한 다음 다시 다른 텍스트 필드에 "1"을 포함해서는 안되는 것을 의미합니까? – dks1725

+0

네가 맞습니다. – Makkafella

+0

@ dks1725 [tf1.text isEqualToString : string] 해결했습니다! (tf1은 텍스트 필드 중 하나의 콘센트 임) – Makkafella

답변

-1

UITextField를 만들 때 keyboardType을 UIKeyboardTypeNumberPad로 설정하십시오.

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 

{ 
    if([[textField text]length]==1) 
    //perform condition 

    else 
    //perform condition 
} 

이 당신은 한 가지 모든 텍스트 필드에 태그를 포기하고 다른 모든 텍스트 필드의 텍스트가 다음 NO 반환 당신이 현재 텍스트 필드에 입력 한 문자열이 동일 여부를 확인 할 수

+1

이것은 고유성 문제를 해결하지 못합니다. 이것은 그가 이미 강요 한 1의 길이를 시행합니다. – Rayfleck

0


를 도움이 될 수 있습니다.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
// These are the characters that are ~not~ acceptable 
NSCharacterSet *unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:CHARACTERS] invertedSet]; 

NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 

if (([[string componentsSeparatedByCharactersInSet:unacceptedInput] count] >1) | ([newString length] > 1)) 
    return NO; 
else 
    //Call function to check if string is same as other textfield.text then return NO else YES 
} 

다른
또 다른 옵션은 1 문자열을 받아 그 문자열 때 TextField.text을 저장하고 업데이트 모든 시간을 입력 할 때 당신이 입력하는 문자열은 해당 문자열의 문자열에 있는지 여부를 함께 확인하실 수 있습니다. 행운을 빕니다

1

사전을 사용합니다. 숫자가 텍스트 필드에서 선택 될 때마다 사전에 해당 값이 있는지 확인하십시오. 값이 없으면 입력 한 값이 올바른 것입니다. 항목을 사전에 추가 한 다음 사용자가 다음 텍스트 필드로 진행하도록하십시오. 모든 텍스트 필드에 대해이 과정을 반복하면이 문제를 매우 쉽게 해결할 수 있습니다.

관련 문제