2012-09-14 1 views
5

하위 뷰인 UIVIew가 있으며 여러 UITextField가 있습니다. 이 텍스트 필드 중 하나 (DATE)는 키보드를 사용하여 편집해서는 안되며, 대신 내부에 Datepicker가 포함 된 PopOver를 사용합니다.UIVIew endEditing : YES 키보드 숨기기를하지 않습니다.

UIControlEventEditingDidBegin에 도달하면 메소드가 실행됩니다. 이 메서드는 DateTextField에서 resignFirstResponder을 호출합니다.

DateTextField가 편집 할 첫 번째 필드 인 경우 모든 것이 올바르게 작동하지만 다른 textField가 편집되고 물론 키보드를 표시 한 다음 DateField를 편집하려고 시도하면 키보드가 숨기지 않고 모든 것이 정상적으로 처리되지만 아무거나하고 키보드.

전에 endEditing:YES 메서드를 호출하려고했지만 작동하지 않습니다. 나는 didEndEditing 텍스트 필드 방법에 endEditing:YESresignFirstResponder을 실행하려했지만 해당 키보드를 가져올 방법이 없습니다.

- (void)showDatePopOver:(id)sender{ 
    [self.view endEditing:YES]; 

    UITextField *textField = (UITextField *)sender; 
    [sender resignFirstResponder]; // hide keyboard 

    /** POP OVER LINES**/ 
} 

답변

2

당신은 대신 didBeginEditing에서 첫 번째로 반응을 사임의 textFieldShouldBeginEditing: 위임 방법을 사용해야합니다 : :

:이 모든에 편집 그러나 dateTextField 텍스트 필드를 수

여기

내 방법입니다
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    return (![textField isEqual:dateTextField]); 
} 

당신은보기 컨트롤러가 텍스트 뷰 위임자라고 지정해야합니다. nterface 선언 [.h 파일]) :

@interface MyViewController : UIViewController <UITextFieldDelegate> 
+0

고맙습니다. 이제 작동합니다. UIControlEventEditingDidBegin 이벤트를 UIControlEventTouchDown으로 변경해야했습니다. – chost

+0

멋지다. 해결 되었으니 기쁘다! 행복한 코딩. – chown

관련 문제