容器视图中的 UIActivityViewController
Posted
技术标签:
【中文标题】容器视图中的 UIActivityViewController【英文标题】:UIActivityViewController inside a Container View 【发布时间】:2013-06-03 10:50:57 【问题描述】:我在容器视图中使用 UIActivityViewController。我想通过电子邮件、推特和脸书分享一些文字。虽然最后两个工作完美,但电子邮件有问题。问题是作曲家视图不会通过取消事件或尝试发送它来消除!当 ActivityView 出现时,我收到以下消息:
Launch Services: Registering unknown app identifier com.apple.mobilemail failed
Launch Services: Unable to find app identifier com.apple.mobilemail
这很奇怪,因为应用标识符确实没有问题,而且我可以在其他视图控制器中使用 ActivityViewController 与电子邮件共享文本(当不在容器视图中时)。 我的代码,如下:
- (void)openBtnTouched
NSString *alertTitleString = [[[GlobalVariables sharedInstance].alertsArray objectAtIndex:self.selectedIndex]objectForKey:@"alertTitle"];
NSString *alertMsgString = [[[GlobalVariables sharedInstance].alertsArray objectAtIndex:self.selectedIndex]objectForKey:@"alertMessage"];
UIActivityViewController *activity;
activity = [[UIActivityViewController alloc] initWithActivityItems:@[alertTitleString,alertMsgString] applicationActivities:nil];
activity.excludedActivityTypes = @[
UIActivityTypeMessage,
UIActivityTypePostToWeibo,
UIActivityTypeSaveToCameraRoll,
UIActivityTypeAssignToContact,UIActivityTypeCopyToPasteboard];
activity.completionHandler = ^(NSString *activityType, BOOL completed)
NSLog(@"Activity Type selected: %@", activityType);
if (completed)
NSLog(@"Selected activity was performed.");
else
if (activityType == NULL)
NSLog(@"User dismissed the view controller without making a selection.");
else
NSLog(@"Activity was not performed.");
;
[self presentViewController:activity animated:YES completion:NULL];
【问题讨论】:
【参考方案1】:我不确定您的应用是为 iPhone、iPad 还是两者设计的,但 Apple 非常具体说明了如何显示 UIActivityViewController
。来自their documentation:
在展示视图控制器时,您必须使用适用于当前设备的适当方式。在 iPad 上,您必须在弹出窗口中显示视图控制器。在 iPhone 和 iPod touch 上,您必须以模态方式呈现。
如果您以其他方式(即在容器视图控制器中)显示它,您很可能会遇到这种奇怪的行为。我建议您按照 Apple 的建议显示活动视图控制器。
【讨论】:
以上是关于容器视图中的 UIActivityViewController的主要内容,如果未能解决你的问题,请参考以下文章