以下代码在iOS 5/6中运行良好.在iOS 7中,它看起来像这样(红色椭圆形用于强调).

码:
if ([MFMessageComposeViewController canSendText]) {
self.messageComposer = [MFMessageComposeViewController new];
self.messageComposer.recipients = @[number];
self.messageComposer.messageComposeDelegate = self;
[self presentViewController:self.messageComposer
animated:YES
completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
问题:这是简单的代码.是否有一些其他外部属性,可能是呈现视图控制器,正在影响这个?任何人都有修复或解决方法?
谢谢.
下面的代码适用于iOS 9.x或更低版本,由于某种原因,如果iOS 10不起作用
if([MFMessageComposeViewController canSendText])
{
controller.body = message;
NSString *tel = pContact.tlc;
controller.recipients = pContact.tlc?@[tel]:nil;
controller.messageComposeDelegate = self;
controller.navigationBar.tintColor = [UIColor whiteColor];
controller.navigationBar.barTintColor = [UIColor blueColor];
[self presentViewController:controller animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
它是破碎还是做了一些改变.不知道这里遗漏了什么.我在黑暗中(漆黑)
编辑:我试图在一个新的空单视图项目上使用一些测试代码,我遇到了同样的问题.
@IBAction func SMS(_ sender: AnyObject) {
let composeVC = MFMessageComposeViewController()
composeVC.messageComposeDelegate = self
// Configure the fields of the interface.
composeVC.recipients = ["5555555555"]
composeVC.body = "Hello from California!"
composeVC.navigationBar.tintColor = UIColor.green
composeVC.navigationBar.barTintColor = UIColor.purple
// Present the view controller modally.
self.present(composeVC, animated: true, completion: nil)
} …Run Code Online (Sandbox Code Playgroud) 我想在iOS7上将图像附加到MMS上.我写了以下代码:
MFMessageComposeViewController *messageController = [[MFMessageComposeViewController alloc] init];
messageController.messageComposeDelegate = self;
NSData *imgData = [NSData dataWithContentsOfFile:@"blablabla"];
BOOL didAttachImage = [messageController addAttachmentData:imgData typeIdentifier:@"public.data" filename:@"image"];
if (didAttachImage)
{
// Present message view controller on screen
[self presentViewController:messageController animated:YES completion:nil];
}
else
{
UIAlertView *warningAlert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"Failed to attach image"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[warningAlert show];
return;
}
Run Code Online (Sandbox Code Playgroud)
问题是,当显示SMS屏幕时,它无法识别图像,也无法发送.我看到这样的事情:

我相信这与我发送的imgData或者typeIdentifier有关.
注意:我尝试了几乎所有可能的typeIdentifiers:@"public.data",@"public.image",@"public.item",...等没有工作.
有人可以帮帮我吗?你使用的typeIdentifier是什么?我在iPhone 5,iOS 7.0.2上测试.
谢谢.
解:
正如Greg指示的那样,这解决了我的问题:将文件名设置为@"image.png",将typeIdentifier设置为kUTTypePNG.
[messageController addAttachmentData:imgData typeIdentifier:(NSString *)kUTTypePNG filename:@"image.png"];
Run Code Online (Sandbox Code Playgroud)
谢谢格雷格.
我有一个发送电子邮件和短信的应用程序.
我遇到的问题是,在iOS 7上加载MFMessageComposeViewController比在之前的iOS上慢得多,随着联系人数量的增加,它变得更糟.
在消息应用程序打开并加载了内容之前,屏幕变黑了几秒钟.
有什么想法吗?
使用相同数量的电子邮件,MFMailComposeViewController比以前更快.
救命!!谢谢.
performance messages ios mfmessagecomposeviewcontroller ios7
我想发送带有图像数据的消息.所以我用过MFMessageComposeViewController.但该控制器仅提供SMS服务.所以我使用UIPasteBoard附加的图像数据.但它也不起作用.键入消息时没有创建"粘贴"按钮.附上图像UIPasteBoard显然是成功的.我认为使用MFMessageComposeViewController并不能解决我的问题.我怎样才能实现目标?
我有一个应用程序,用户可以通过将图像附加到MFMessageComposeViewController的实例来选择图像并将其发送给朋友.在MFMCVC视图中按下发送后,事情在某些时候按预期工作 - 带有图像的消息已成功发送给收件人,或者"消息失败"标签显示在本机iMessage客户端中的消息旁边(但在两种情况下,图像在本机客户端中都可见.但是,按下发送后的一半时间内会出现一个错误(在运行iOS 7的iPhone 4上).消息 - 附件和所有 - 消失,再也不会被看到.收件人从未收到邮件,也不会出现在iMessage的发件人邮件通道中.
我很确定这是Apple的MFMessageComposeViewController本身的一个错误,因为API很简单,我能够在单独的演示应用程序中可靠地重现错误https://github.com/timcour/mf-message-compose- fail-demo.git.
- (void)displaySMSComposerSheet
{
MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];
picker.messageComposeDelegate = self;
NSData *data = [_imageDataCache objectForKey:[_imageURLs objectAtIndex:_currentIndex]];
[picker addAttachmentData:data
typeIdentifier:(NSString *)kUTTypeGIF
filename:@"share.gif"];
if (![self.recipientTextField.text isEqualToString:@""]) {
picker.recipients = [NSArray arrayWithObject:self.recipientTextField.text];
}
picker.body = [NSString stringWithFormat:@"image: %i", _currentIndex];
[self presentViewController:picker animated:YES completion:NULL];
}
Run Code Online (Sandbox Code Playgroud)
在很多成功和失败的情况下观察用户界面之后,在强调操作系统加剧的组合视图中似乎是一种竞争条件 - 不确定它是内存还是CPU压力(或两者兼而有之?).在任何情况下,当发送成功时,在选择联系人之后立即用其相应会话的内容填充消息信道的内容,明显地将新消息附加到结尾.但是当错误表面和消息消失时,对话的先前消息通常仅在按下发送按钮后才出现,而不显示新消息.如果这确实是竞争条件,那么一个猜测是它是作曲家VC的消息提取机制和-viewDidLoad.
有没有人在此之前遇到过这种情况并且/或者知道某种解决方法?我将向苹果提交一份错误报告,但我想找到一个不包括等待Apple修复的解决方案.
笔记:
iPhone 4和iPhone 5s上的消息最常消失,但iPod touch第5代(所有运行的iOS 7.0.2)很少消失.
使用iPhone 4上的https://github.com/timcour/mf-message-compose-fail-demo.git应用程序,通过尽可能快地将20张图像发送给同一个人,可以最轻松地复制该错误.
有一个单独的(但可能是相关的)错误.在MFMCVC视图中选择输入联系人的电子邮件地址后,vc将确定是否应发送iMessage或MMS.在测试期间的某些时间,它做出了错误的决定,并尝试将消息作为MMS发送,尽管收件人iMessage帐户没有与之关联的电话号码.这导致向发件人发送一条消息,就好像它已成功发送,但实际上无法到达目的地.
这似乎并不是许多用户向Apple抱怨的"iMessage无法发送消息"的错误.
更新:
以下是消息消失且无法发送时记录的堆栈跟踪: …
目前,我正在开发一个应用程序,我必须通过IMessage发送照片/视频.照片
发送代码是正常的工作,但当我通过IMessage发送视频,我只是得到
在作曲家中制作的图标没有视频显示如下:

我正在使用此代码在IMessage中显示视频以进行发送:
if (ver_float < 6.0)
{
UIPasteboard *pasteboard;
pasteboard = [UIPasteboard generalPasteboard];
NSString *filePath =pathToVideo;
NSData *datavideo = [NSData dataWithContentsOfFile:filePath ];
[pasteboard setData:datavideo forPasteboardType:[UIPasteboardTypeListImage objectAtIndex:0]];
}
else
{
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
NSString *filePath =pathToVideo;
NSData *videoData = [NSData dataWithContentsOfFile:filePath];
[pasteboard setData:videoData forPasteboardType:[UIPasteboardTypeListImage objectAtIndex:0]];
}
NSURL *urlstr = [NSURL URLWithString:@"sms:"];
[[UIApplication sharedApplication] openURL:urlstr];
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?Thanx提前.
iphone objective-c imessage mfmessagecomposeviewcontroller ios6
我们的应用仅支持纵向模式.介绍UIActivityViewController的工作原理.
但是,与"消息"选项共享会导致应用崩溃:
***由于未捕获的异常'UIApplicationInvalidInterfaceOrientation'而终止应用程序,原因:'支持的方向与应用程序没有共同的方向,[MFMessageComposeViewController shouldAutorotate]返回YES'
与另一个选项共享,例如Facebook Messenger,可以使用.
像这样的类似SO问题的解决方案不起作用,因为他们建议支持所有方向.我们只想支持肖像.
1)我们如何支持"消息"共享选项,同时仅支持纵向方向,即仅支持Info.plist中的纵向方向?
2)为什么我们能够在Info.plist中仅支持纵向的其他应用程序中支持"消息"共享选项,但不支持此选项?我们应该在哪里寻找调试目的?
// Define share objects
let objectsToShare = ["test message"] as [Any]
// Configure UIActivityViewController
let activityViewController = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
activityViewController.excludedActivityTypes =
[UIActivityType.addToReadingList,
UIActivityType.assignToContact,
UIActivityType.print,
UIActivityType.copyToPasteboard]
// Define completion handler
activityViewController.completionWithItemsHandler = doneSharingHandler
// Show UIActivityViewController
present(activityViewController, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud) ios mfmessagecomposeviewcontroller uiactivityviewcontroller swift
使用iOS 11的iPhone 8和iPhone 8 plus无法从iOS应用程序内部打开MFMessageComposeViewController.他们有时打开黑屏.
是否有其他人在运行iOS 11的iPhone 8上遇到此问题并找到了解决方案?请帮忙.
我设法仅在运行iOS 11的iPhone 8上重现此问题.
提前致谢!
我正在尝试为我的应用启用 MessageUI 中的相机和应用按钮。我在 Apple 的文档中没有找到关于如何执行此操作的任何地方。有任何想法吗?谢谢!
更新:我disableUserAttachments()在 Apple 的文档中找到了一个函数,这与我正在寻找的相反。Apple 特别表示,此功能会禁用消息视图中的相机/附件按钮。我的项目中没有此代码,它仍然处于禁用状态。我还没有找到像 enableUserAttachments 这样的东西,这是我认为我需要的。任何想法表示赞赏。

xcode messageui imessage mfmessagecomposeviewcontroller swift