【发布时间】:2013-03-13 11:15:30
【问题描述】:
我有一个显示联系人列表的 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];
}
}
【问题讨论】:
-
你能发布一些关于如何显示/关闭视图控制器的代码吗?从错误消息中可以看出,它们的呈现/关闭方式存在问题。
-
这是在实际的 iDevice 上发生,还是刚刚在模拟器上测试过?
canSendText返回一个布尔值,指示当前设备是否能够发送文本消息。但是,canSendText可能会在模拟器上返回 true,因为您可能在 Mac 上安装了消息应用程序(请参阅附加问题 mby.me/Gw) -
我在 iphone 5 上测试
标签: ios uitableview uiactionsheet mfmessagecomposeview