【发布时间】:2012-12-13 09:56:09
【问题描述】:
我已经让这段代码运行了好几个月(在 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)
【问题讨论】:
-
首先,如果你做的每件事都正确,你就不会惹恼响应者。我的意思是,与其用
canBecomeFirstResponder、canResignFirstResponder、becomeFirstResponder和resignFirstResponder让情况变得更糟,不如找出问题所在并加以修复。例如,您可能希望停止使用已弃用的代码并将其替换为presentViewController:animated:completion:。 -
@A-Live 感谢您的提示,不知道它已被弃用。像你说的那样改变了它仍然无法让它工作:(
-
我只能建议然后检查是否从主线程“呈现”(使用
[[NSThread currentThread] isMainThread])。 -
@A-Live 是的,它从主线程运行。
-
截图中没有作曲家的标题,你有没有修改
MFMailComposeViewController?
标签: iphone objective-c ios ios6 mfmailcomposer