2010-06-05 4 views
1

편집 : 좋아,이 이상한 ... 광범위한 디버깅을 수행 한 후 텍스트 필드가 첫 번째 응답자 상태를 사임하는 동안 (나는 더 이상 깜박임 막대가 없음을 볼 수 있음) 키보드가 아님을 발견했습니다. GOING DOWN! 아마도 이것은 다른 질문을 할만한 가치가있을 것입니다.iPhone OS 3.2에서 팝업을 텍스트 필드와 함께 키보드를 닫을 수 있습니까?

커스텀 uiviewcontroller 서브 클래스에 여러 개의 텍스트 필드가 있는데, popover 내에 표시됩니다. popover는 bar 버튼으로 표시됩니다. popover가 해제 될 때 키보드가 내려 가기를 원합니다 (사용자가 bar 버튼을 다시 탭하거나 popover 외부를 두드리는 것) popover가 표시되는보기 컨트롤러에서 Popover가 해제 될 때 두 가지 방법 중 하나에서 난

[optionsController dismissFirstResponder]; 

Optionscontroller가 팝 오버의 UIViewController 하위 인 호출 Dismissfirstresponder 내가 정의하는 방법이다..

-(void)dsimissFirstResponder { 
[nameField resignFirstResponder]; 
[descriptionField resignFirstResponder]; 
[helpField resignFirstResponder]; 

} 

사람들은 I 텍스트 필드에 XIB 연결된 세 IBoutlets있다

그건 작동하지 않습니다. 이것에 대한 어떤 도움도 크게 감사 할 것입니다.

코드는 다음과 같이 호출됩니다. [optionsController dismissFirstResponder]; [poppoverController dismissPopoverAnimated];

dismissFirstResponder에 중단 점을 설정하고 예상 한대로 호출됩니다. 필자는 또한 체크했고, 세 개의 IBOutlet은 모두 그 함수 호출 동안 non-nil입니다. 이것들은 전체 응용 프로그램의 유일한 텍스트 필드이므로, 키보드를 놓을 다른 방법을 모르겠습니다.

+0

코드가 전혀 호출되지 않았습니까? "dsimissFirstResponder"에 유형이 있습니다. popover가 실제로 닫히기 전에 호출합니까? – Eiko

+0

나는 [name point ...에 중단 점을 설정했다. 그리고 실제로 그것이 필요할 때 호출된다. 질문이 수정되었습니다. –

답변

0

필요한 것은 팝 오버에 대한 대리자 메서드 콜백을받는 것입니다. UIPopoverControllerDelegate에 대한 문서를 보셨습니까? 다음과 같은 방법이 정의됩니다

  • -popoverControllerShouldDismissPopover :
  • -popoverControllerDidDismissPopover : 이것들은 사용자가 팝 오버 (등, 외부 도청)을 기각하는 어떤 제스처를 수행 할 때

을 전화를받을해야 당신을 가정 popover에 대한 대리자를 설정하고 해당 대리인에서이 공식 프로토콜을 구현했습니다. - popoverControllerDidDismissPopover :가 호출되면 해당 지점에서 컨트롤에 -resignFirstResponder를 호출하면됩니다.

// In your popover delegate 
- (void)popoverControllerDidDismissPopover: 
        (UIPopoverController *)popoverController 
{ 
    [nameField resignFirstResponder]; 
    [descriptionField resignFirstResponder]; 
    [helpField resignFirstResponder]; 
} 
+0

Ahhh ... 어떤 객체로 델리게이트를 할당 할 수 있다는 사실을 잊어 버렸습니다 ... Popover 내부에 표시된 View Controller 서브 클래스를 Popover의 델리게이트로 할당하고, 내가 돌아 왔을 때 말한대로 해봅시다. 내 프로젝트, 그리고 그것이 작동하는지 확인하십시오. –

+0

그것은 불행히도, 작동하지 않았다. 위의 편집을 참조하십시오. –

+0

그래서 대답을 찾았습니까? 나는 같은 문제를 겪고있다 : / –

관련 문제