2011-04-19 7 views
3

두 개의 텍스트 필드 (하나는 사용자 이름 &이고 다른 하나는 비밀번호)와 하나의 버튼 (로그인 용)이 있습니다. 두 텍스트 필드에는 모두 clearButtonMode가 있습니다 (즉, 한 번의 클릭으로 필드를 지우려면 텍스트 필드의 오른쪽 끝에 작은 십자 x 버튼을 제공합니다).UITextField의 변경 사항을 어떻게 알릴 수 있습니까?

처음에는 로그인 버튼이 비활성화되었습니다. 두 개의 텍스트 필드 모두 적어도 하나의 문자가 있어야하는 경우에만 & 인 경우에만 사용 가능하게하고 싶습니다. 또한 십자가 버튼을 클릭하는 동안 작동해야합니다.

방법이 작업을 수행하는 날을 제안하십시오 .... 사전

답변

10

에서

덕분에 당신은 그에 따라 버튼을 사용할 수 두 필드 및 세트에 대한 UITextFieldTextDidChangeNotification 통지를 사용할 수있다.

예제 코드 :

// add the observer 
[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(textFieldDidChange:) 
              name:@"UITextFieldTextDidChangeNotification" 
              object:nil]; 

// the method to call on a change 
- (void)textFieldDidChange:(NSNotification*)aNotification 
{ 
    myButton.enabled = [self bothTextFieldsHaveContent]; 
} 

- (BOOL)bothTextFieldsHaveContent 
{ 
    return ![self isStringEmptyWithString:textField1.text) && 
      ![self isStringEmptyWithString:textField2.text); 
} 

// a category would be more elegant 
- (BOOL)isStringEmptyWithString:(NSString *)aString 
{ 
    NSString * temp = [aString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
    return [temp isEqual:@""]; 
} 
+4

기능적인 차이는 지금 없지만, 당신은 명시 적으로있는 NSString'@ 'UITextFieldTextDidChangeNotification "'대신'UITextFieldTextDidChangeNotification' 사용자 정보 키를 이용해야한다 (다만'를 제거 @ '및 따옴표). 사용자 정보 키의 값을 시간에 따라 변경하는 것이 가능하며 명시 적 NSString을 사용하면 코드가 손상 될 수 있습니다. 가장 간단한 모범 사례를 따르면 좋은 생각입니다. –

관련 문제