2010-07-31 4 views
2

키보드를 사퇴 할 때 문제가 있습니다. 나는 내비게이션 컨트롤러에 tableViewController을 가지고 있고 다른 뷰 컨트롤러는 셀 중 하나를 선택할 때 내비게이션 컨트롤러에 푸시됩니다. 뷰 컨트롤러에 키보드가 즉시의 ViewController를 누르면로 표시되도록 내가 처음 응답자로 텍스트 필드를 할당하고이 때 잘 작동내비게이션 컨트롤러에서 viewcontroller가 팝업되었을 때 키보드가 닫히지 않음

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { 
    [self.navigationController popViewControllerAnimated:YES]; 

} 

- (void)viewWillDisappear:(BOOL)animated{ 
    [self.textField resignFirstResponder]; 
} 

의 ViewController 터지는 동안 키보드가 사임한다. 그러나 다시 동일한 뷰 컨트롤러를 누를 때 키보드가 튀어 나오면 사임하지 않습니다. tableViewController 뷰를 차단하고 있습니다.

+0

몇 가지 추측 : 1. 텍스트 입력란 실제로 처음되지 않습니다 응답자 2. textField를 콘센트에 연결하지 않았으며 nil입니다. viewWillDisappear에서 중단 점을 사용하여 호출되는지 확인하고 self.textField가 실제로 생각한 내용인지 확인하십시오. –

+0

안녕하세요 ... 나는 textField가 [textField isFirstResponder] 코드를 사용하는 첫 번째 응답자인지 여부를 확인하고 이것이 YES를 반환합니다. [textField resignFirstResponder] 또한보기 컨트롤러를 팝했지만 키보드가 숨어 있지 않은 경우 두 번째로 예를 반환합니다. – user347161

답변

-3

같은 컨텍스트 (UINavigationController, UIAlertView, UITextField 또는 UITextView)를 사용하는 것과 같은 문제가 발생했습니다.

나는이 같은 resignFirstResponder 호출 (파일의 viewWillDisappear 방법) 배경의 팝업을 실행하고 제거 쉽게이 문제를 해결

:

-(void)popCurrentView { 
    [self.navigationController popViewControllerAnimated:YES]; 
} 

-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { 
    if (alertView.cancelButtonIndex != buttonIndex) { 
     [self performSelectorInBackground:@selector(popCurrentView) withObject:nil]; 
    } 
} 
+2

백그라운드 스레드의 UI에는 영향을 미치지 않아야합니다. –

관련 문제