2010-04-04 4 views
1

"valueDidChange"- 텍스트 필드에 대한 이벤트를 잡을 방법이 있습니까? oOUITextField valueDidChange-Event

저는 UITextField가있는 modalView가 있습니다.

UITextField가 비어있는 경우 NavigationBar의 "완료"버튼을 비활성화하고 텍스트를 입력해야 사용할 수있게됩니다.

지금은 "textFieldShouldReturn"방법을 사용하여이 작업을 수행하는 유일한 방법입니다. 이 방법은 유용하지만 사용하기 쉽지 않습니다.

편지를 입력하거나 제거 할 때마다 요구 사항을 확인할 수있는 방법이 없습니까?

답변

2
+0

문제를하는 데 도움이 바랍니다 : -textField : shouldChangeCharactersInRange : replacementString : 문자가 삽입되기 전에 가 호출됩니다. 내가 필요한 것은 문자가 삽입 된 후에 전화가 될 것입니다. 범위 및 replacementstring 매개 변수를 사용하여 결과 총 문자열을 구성하는 방법을 알고 있다면 여전히이 작업을 수행 할 수 있습니다 – Infinite

+0

아무도 신경 쓰지 않는다면 해결책은 addTarget : selector : controlevent : – Infinite

+0

을 사용하여 "EditingChanged"컨트롤 이벤트를 잡는 것입니다. @ 무한정 : 대답으로 넣고 받아 들일 수 있습니다. – kennytm

2

사람이 걱정하는 경우 : 선택 : : controlevent :이 솔루션은 addTarget을 함께 제어 이벤트 "EditingChanged"잡으려고이며, 나는 UITextField.text이 텍스트가있는 경우에만 사용할 수 있습니다 self.editButtonItemUITableViewController가)

2

합니다. 이 UITextField을 무언가로 채우기 전에 사용자가 "완료"를 누르지 않도록하는 방법입니다. 나는 이것이 당신이 찾고있는 것과 정확히 같다고 생각합니다. 여기에 어떻게 내가 해냈어 :

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

    // Logs for seeing patterns, if you so please 
    NSLog(@"replacementString length = %d",string.length); 
    NSLog(@"textField.text = %@",textField.text); 
    NSLog(@"range = (%d,%d)\n\n",range.location,range.length); 

    if (string.length) { 
     self.editButtonItem.enabled = YES; 
    } else if (!string.length && textField.text.length == range.length) { 
     self.editButtonItem.enabled = NO; 
    } 
    return YES; 
} 

내가 그 여기