2

UITextField가 표시 될 때 키보드가 올바르게 표시되지만 MFMailComposeViewController가 표시되고 해제 된 후에 나타나지 않는 문제가 있습니다. 커서는 텍스트 필드에는 나타나지만 키보드는 나타나지 않습니다. 작동MFMailComposeViewController가 해제 된 후 UITextField가 키보드를 표시하지 못함

[self.view addSubview:createPresetView]; 
[presetNameField becomeFirstResponder]; 

:

기본적으로 UIView의 사용자가 '만들기 사전 설정'버튼을 탭하면 UITextField에 들어있는 현재보기에 추가됩니다. 사용자는 여러 개의 새로운 사전 설정을 추가 할 수 있으며,보기가 추가 될 때마다 텍스트 필드가 첫 번째 응답자가되고 키보드가 나타납니다. 뷰 계층 구조에없는 presetNameField 문제를 배제하기 위해 1 초 지연 후에도 becomeFirstResponder를 시도해 보았습니다. 동일한 결과가 나타납니다.

다음, 미리 설정된는 표준 MFMailComposeViewController 사용하여 이메일을 통해 공유 할 수 있습니다 :

MFMailComposeViewController *mailView = [[MFMailComposeViewController alloc] init]; 
[mailView setMailComposeDelegate:appController]; 
[mailView setSubject:@"New preset"]; 
[mailView setMessageBody:@"\n\nMail from app" isHTML:NO]; 
[appController presentModalViewController:mailView animated:YES]; 

메일 작성보기 내가 말할 수있는 지금까지 제대로 일축 :

[controller.view endEditing:YES]; // I added this as a test to ensure the mail view resigns first responder, no difference. 
[self dismissModalViewControllerAnimated:YES]; 
[controller release]; 
controller = nil; 

을하지만 지금 만들기를 사전 설정 버튼은 텍스트 필드가있는보기를 추가하고 텍스트 필드를 첫 번째 응답자로 설정하지만 키보드는 나타나지 않습니다.

텍스트 필드에서 firstFirstResponder가 될 때 무슨 일이 일어나고 있는지 확인했습니다. 텍스트 필드 자체가 유효하며 canBecomeFirstResponder에 YES를 반환합니다.

내가 발견 한 유일한 단서는 [presetNameField becomeFirstResponder] 항상은 (메일보기가 표시되기 전에도) NO를 반환한다는 것입니다.

제안 사항?

+0

당신은 해결책을 찾았나요? –

답변

0

MFMailComposeViewController는 예상대로 첫 번째 응답을받습니다. firstResponder를 텍스트 필드에 반환하는 기본 제공 메커니즘은 없습니다. 하지만 viewWillAppear:에서 할 수 있습니다. 이 같은 (MFMailCompose 같이) 발표 뷰 컨트롤러에서 반환 할 때

당신은 그것을 만 수행 할 수 있습니다

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 

    // this is optional, if you care about context of presentation 
    if (!self.isBeingPresented) { // if we're not on our way up the stack of vcs 
     [self.presetNameField becomeFirstResponder]; 
    } 
} 
+0

감사합니다. 그러나 텍스트 필드가 자동으로 첫 번째 응답자가 될 필요는 없습니다. 사용자가 새 사전 설정을 만들고 앱에서 이름을 묻는 경우에만 발생합니다. 문제는 첫 번째 응답자가 될 때 텍스트 필드에 키보드가 표시되지 않는다는 것입니다 (MailComposeView가 표시된 후에 만). – psonice