2014-03-07 2 views
0

두 개의 UITextFields 속성이있는 ViewController가 있습니다.UITextField Delegate를 사용하여 동작을 수정하는 방법?

두 필드에 입력 된 최대 문자 수를 3으로 설정하는 다음과 같은 방법이 있습니다.이 메서드는 텍스트 필드 # 1에 대한 제한을 3으로 설정하고 텍스트 필드 # 2에 대한 제한을 2로 설정하려고합니다. .

나는 또한 나의 rightBarButtonItem장애인, 그래서 그것을 모두 텍스트 필드에 텍스트를 입력 한 경우에만 수있게되고 싶어합니다. 아무도 이것으로 나를 도울 수 있습니까?

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    NSUInteger newLength = textField.text.length + string.length - range.length; 

    return (newLength > 3) ? NO : YES; 
} 

답변

0

왜 방법 내부하지 if...else 조건 .. 같은 뭔가 : 당신이 그것을 확인할 수 있도록 당신은 방법에있는 당신의 텍스트 필드에 대한 참조를

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    NSUInteger newLength = textField.text.length + string.length - range.length; 
    if(textField == textField1) // textField1 as your first UITExtfield 
    { 
      return (newLength > 3) ? NO : YES; 
    } 
    else 
    { 
     return (newLength > 2) ? NO : YES; 

    } 
} 
+0

감사합니다. 내 질문의 두 번째 부분은 어떻습니까? "내 rightBarButtonItem도 사용할 수 없도록 설정되어 있으므로 두 텍스트 필드에 텍스트가 입력되어있는 경우에만이 텍스트를 사용할 수 있도록 설정해야합니다. –

0

.

대신 대리자 메서드의
if (textField == textfield1) { 
    //set maxLength to 3 
} else { 
    //set maxLength to 2 
} 
3

, 당신은 다음과 같은 사용 방법은 .IT 파인 작동합니다 :의 당신은 당신이 그것을 테스트 할 수 IBOutlets로 텍스트 필드 1과 텍스트 필드 2 있다고 가정 해 봅시다.

BOOL isFirstTExtFieldValue; //To check whether textField has some Value. 
BOOL isSecondTExtFieldValue; 
UITextField * textField1; //Assuming that you have already set the frames. 
UITextField * textField2; 
UIButton * button; 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
isFirstTExtFieldValue=NO; //Initially set the value to No. 
isSecondTExtFieldValue=NO; 

textField1.tag=1; 
textField2.tag=2; 

// Do any additional setup after loading the view, typically from a nib. 
[textField1 addTarget:self action:@selector(textFieldDidChange:)forControlEvents:UIControlEventEditingChanged]; 

[textField2 addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; 

button.enabled=NO; 
} 

-(void)textFieldDidChange :(UITextField *)theTextField 
{ 


if(theTextField.tag==1) 
{ 
    if ([[textField1 text] length] > 3) { 
     [textField1 setText:[[textField1 text] 
              substringToIndex:3]]; 
    } 
    else if([[textField1 text] length] >= 1) 
    { 
     isFirstTExtFieldValue=YES; 
    } 
    else 
    { 
     isFirstTExtFieldValue=NO; 

    } 

} 
else if(theTextField.tag==2) 
{ 
    if ([[textField2 text] length] > 2) { 
     [textField2 setText:[[textField2 text] 
          substringToIndex:2]]; 
    } 
    else if([[textField2 text] length] >= 1) 
    { 
     isSecondTExtFieldValue=YES; 
    } 
    else 
    { 
     isSecondTExtFieldValue=NO; 

    } 
} 
if (isFirstTExtFieldValue && isSecondTExtFieldValue) 
{ 
    button.enabled=YES; 
} 
else 
{ 
    button.enabled=NO; 
} 

} 

해피 코딩 !! 건배..!!

+0

사용해보기 ... 문제가 있으면 언제든지 물어보십시오 ... –

관련 문제