我有一个 UITableViewController 显示一个联系人列表,当用户选择一行时,它会显示一个 UIActionSheet 来询问用户一个操作(呼叫,发送短信......)。
用户选择一个动作,第一个 UIActionSheet 将显示另一个包含电话号码的 UIActionSheet。
用户选择一个电话号码,这应该会显示 SMS 消息编写器。
问题是当用户选择电话号码时,消息编写器视图不显示(只是黑屏),并且我在 MFMessageComposeViewController 的 didFinishWithResult 中收到 MessageComposeResultCancelled。
这会生成此警告“警告:在演示或关闭过程中尝试从视图控制器中关闭!”
如何正确调用和显示 SMS 消息编写器?
(如果我在用户使用 didSelectRowAtIndexPath 选择列表中的一行时直接调用它,这非常有效)
这是一些代码:
1- 在 didSelectRowAtIndexPath 方法中调用第一个 UIActionSheet:
UIActionSheet *popupQuery;
...
[popupQuery showInView:self.view];
2-在 clickedButtonAtIndex 方法中调用第二个 UIActionSheet:
UIActionSheet *popupQuery2;
...
[popupQuery showInView:self.view];
3-从相同的方法,调用消息编写器:
[self sendSMS:@"" recipientList:[phoneNumbers objectAtIndex:buttonIndex]];
显示消息编写器的方法:
(void)sendSMS:(NSString *)bodyOfMessage recipientList:(NSArray *)recipients
{
MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
if([MFMessageComposeViewController canSendText])
{
controller.body = bodyOfMessage;
controller.recipients = recipients;
controller.messageComposeDelegate = self;
[self presentModalViewController:controller animated:YES];
}
}