我已经有好几个月的代码了(在iOS 5.1上),但是我没有检查很长时间,现在(可能是iOS 6.0问题)我注意到我的MFMailComposeViewController没有显示键盘甚至在聚焦消息体或收件人等文本字段时。
奇怪的是它会对水龙头做出反应,因此我可以将光标设置在“收件人”或“主题”上并显示光标,或者我可以按住水龙头使缩放玻璃弹出。 但没有键盘 :(
这是我正在使用的代码:
MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
mailer.mailComposeDelegate = self;
[self presentModalViewController:mailer animated:YES];
我一直在搜索这个问题并发现了与之相关的内容
[self resignFirstResponder]
或[mailer becomeFirstResponder]
,但不起作用。
如果我在呈现控制器之前或之后添加此代码
NSLog(@"mailer become %d", [mailer canBecomeFirstResponder]);
它显示0
,但
NSLog(@"self resign %d", [self resignFirstResponder]);
显示1
,但在添加
0
- (BOOL)canResignFirstResponder {
return YES;
}
文档说默认情况下它应该返回YES
,所以它很奇怪。
如果我使用这样的代码创建一个空项目,它运行良好,但我不能真正做到这一点,因为我目前的项目非常庞大。 任何帮助将不胜感激,卡在这里......
在iPhone和iOS模拟器上测试(部署目标5.1和6.0)
答案 0 :(得分:2)
只是大声笑。问题在于
[UIApplication sharedApplication] delegate] window] setWindowLevel:UIWindowLevelStatusBar + 1]
在我的应用中的某个地方。好像他们在iOS 6中更改了键盘windowLevel
,所以现在它已经落后了。我很懒,但知道键盘窗口的确切windowLevel
会很有趣:)
小心!
感谢所有人的帮助!
答案 1 :(得分:1)
如果要显示键盘,则必须从邮件程序中取出文本框,然后发送消息“getsFirstResponder”。
但是,没有直接的方法可以做到这一点。当您触摸信息框时,键盘会出现吗?
答案 2 :(得分:0)
对于其他可能在MailComposer中提出此键盘问题的人来说,这个解决方案对我有用:
显示视图然后调用" becomefirstResponder"一样的 完成方法中的MFMailComposeViewController。
MFMailComposeViewController * mailCon = [[MFMailComposeViewController alloc] init]; [self presentViewController:mailCon animated:NO completion:^ { [mailCon becomeFirstResponder]; }];