2014-04-16 5 views
1

텍스트 필드에는 세 가지 유형이 있습니다. 최소한의 숫자 만 필요합니다. 쓰기 코드 아래에 있지만 작동하지 않습니다. 도와주세요텍스트 필드에 최소 텍스트를 추가하는 방법

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ 
    if (country.text.length <= 4) { 
     return YES; 
    } 

    if(code.text.length<=4) { 
     return YES; 
    } 

    if(textPhone.text.length<=10) { 
     return YES; 
    } 

    return YES; 
} 
+0

이 작업은'xcode IDE '와 어떤 관련이 있습니까? – Popeye

+0

그래서 기본적으로 항상 '예'를 반환하므로 정확하게 작동하지 않는 것은 무엇입니까? – Alladinian

+0

항상 'YES'를 반환하는 경우이 'if 문'을 사용하는 이유는 무엇입니까? – Popeye

답변

3

논리에 결함이 있습니다. 어떤 필드가 편집되었는지에 대한 귀하의 수표를 기반으로하지 않습니다. 당신이 왜 심지어 if statement 신경 모든 경우에 YES를 반환하기 때문에이 절대적으로 무의미한 것 같다

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

    // Allow backspace anyway 
    if (range.length == 0) 
     return YES; 

    if (textField == country) 
     return (country.text.length <= 4); 

    else if (textField == code) 
     return (code.text.length <= 4); 

    else if (textField == textPhone) 
     return (textPhone.text.length <= 10); 

    // Default for all other fields 
    return YES; 
} 
+0

그것의 잘 작동하는 형제 ..하지만 내가 4 숫자를 입력하면 내가 번호를 삭제할 수 없습니다. 내가 3 개의 숫자를 입력하면 삭제할 수 있습니다. ? – janagowtham

+0

백 스페이스 "문자"를 허용하려면 'range.length == 0'인 경우 먼저 확인한 다음 다른 모든 검사보다 먼저 YES를 반환해야합니다. 내 대답을 업데이트 할게. – Cyrille

0

첫째을하지만, 당신이하고 주장하는 경우는 다음 중 하나를 수행하십시오

이보십시오. 당신은 당신이 문은 여전히 ​​

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ 
    if((([textField tag] == 1001 || [textField tag] == 1002) && [textField text].length <= 4) || ([textField tag] == 1003 && [textField text].length <= 10)) { 
     return ((([textField tag] == 1001 || [textField tag] == 1002) && [textField text].length <= 4) || ([textField tag] == 1003 && [textField text].length <= 10)); 
    } 
    return YES; 
} 
를 시도 할 경우 함께하고 싶어 할

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ 
    switch([textField tag]) { 
     case 1001: 
        // Do whatever 
        return (textField.text.length <= 4); 
     case 1002: 
        // Do whatever 
        return (textField.text.length <= 4); 
     case 1003: 
        // Do whatever 
        return (textField.text.length <= 10); 
     default: 
       return YES; 
    } 
} 

가 있습니까

... Initilization code for country, textPhone and code. 
[country setTag:1001]; 
[code setTag:1002]; 
[textPhone setTag:1003]; 

을 다음과 shouldChangeCharactersInRange: 방법에 UITextFields 설정을 초기화 한 후

+0

'return' 다음에'break's가 필요 없습니다! – Cyrille

+0

@Cyrille 매우 절실하고 편집되지 않기 때문에 사실입니다. – Popeye