我有一个问题,即在显示 UITextField 时键盘正确显示,但在 MFMailComposeViewController 出现并关闭后无法显示。光标出现在文本字段中,但没有键盘。
基本上,当用户点击“创建预设”按钮时,UIView 会添加到包含 UITextField 的当前视图中:
[self.view addSubview:createPresetView];
[presetNameField becomeFirstResponder];
这样可行。用户可以添加多个新的预设,每次添加视图时,文本字段成为第一响应者,并出现键盘。为了排除 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;
但是现在 Create Preset 按钮添加了带有文本字段的视图,将文本字段设置为第一响应者,但没有出现任何键盘。
我已经检查了当我在文本字段上成为 FirstResponder 时发生了什么。文本字段本身是有效的,并向 canBecomeFirstResponder 返回 YES。
我发现的唯一潜在线索是 [presetNameField becomeFirstResponder]总是返回 NO(甚至在显示邮件视图之前)。
有什么建议么?