我对iOS开发相对较新并且有一个问题。 我需要发送多部分SMS消息。我知道我可以接受长消息并将其传递给' MFMessageComposeViewController'它会相应地打破我的一切。但是,这不起作用,因为我发送的每条消息都有一个特定的分隔符,我需要每个消息都以相同的分隔符开头。所以,我试图做的是使用for循环,并在另一个之后显示每个控制器。但是,我的&#; MfMessageComposeViewController'对于其他消息部分未显示,它仅显示初始消息。终端中显示的警告是
"尝试出席< MFMessageComposeViewController:0x126819200> on< ViewController:0x12660ae80>正在等待延迟的< MFMessageComposeViewController:0x12683b200>完成"
有什么建议吗?我尝试使用代码块并同步所有内容,以便每个Controller都以同步方式显示,但这不起作用。代码如下
NSMutableArray *strings = [SmsBuilder createSMS:160 StringToConvert: AddOrEdit:@"PersonAdd"];
void (^send)(NSString *) = ^(NSString *str){
MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc]init];
@synchronized(controller){
[controller setBody:str];
[controller setMessageComposeDelegate:self];
[controller setRecipients:[NSArray arrayWithObjects:@"111-111-1111", nil]];
[self presentViewController:controller animated:YES completion:^(void){}];
}
};
for(int i=0;i<[strings count];i++) send([strings objectAtIndex:i]);
答案 0 :(得分:0)
MFMessageComposeViewController有一个委托协议,它会在完成发送时通知您。您需要在此方法中关闭viewcontroller,并从该完成块中显示下一部分。
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller
didFinishWithResult:(MessageComposeResult)result {
[controller dismissViewControllerAnimated:YES completion:^{
[self showNextMessagePart];
}];
}