【问题标题】:On iOS7 iPad 1x/2x mode only Facebook & Twitter icon is missing in UIActivityViewController?在 iOS7 iPad 1x/2x 模式下,UIActivityViewController 中仅缺少 Facebook 和 Twitter 图标?
【发布时间】:2015-08-17 14:57:20
【问题描述】:
  • 我的应用程序仅适用于 iPhone,当我在 iPad 上以 1x 和 2x 模式运行相同的应用程序时,UIActivityViewController 不显示 facebook 和 twitter 图标,邮件图标也不正确。尽管该功能运行正常。
  • 根据配置,各个帐户已在“设置”中配置。
  • 这个问题只出现在 iPad 上,但在 iPhone 上可以正常工作。

    - (void)onShare:(id)sender {
    
    UIActivityViewController *activityView = [[UIActivityViewController alloc] initWithActivityItems:@[@"World Cup! 2015",[UIImage imageNamed:@"WC15"]] applicationActivities:nil] ;
    
    [activityView setExcludedActivityTypes:[NSArray arrayWithObjects:
                                        UIActivityTypePostToWeibo, UIActivityTypeCopyToPasteboard, UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll, UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr, UIActivityTypePostToVimeo, UIActivityTypePostToTencentWeibo, UIActivityTypeAirDrop, UIActivityTypePrint,nil]];
    
    [self presentViewController:activityView animated:YES completion:nil];
    

    }

仅缺少 Facebook 和 Twitter 图标。

这是截图

【问题讨论】:

    标签: ios iphone facebook ipad


    【解决方案1】:

    作为上述问题的解决方案,我刚刚创建了带有所需动画的自定义UIView,并为每个不同的实现项目。我探索的唯一解决方案。

    【讨论】:

      【解决方案2】:

      原因是我们需要使用 UIPopOverViewController for iPadUIActivityViewController for iPhone

      详细描述请看这个问题:UIActivityViewController crashing on iOS8 iPads

      这是解决此问题所需的代码:

      UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:[NSArray arrayWithObject:@"Test",nil] applicationActivities:nil];
      
      //if iPhone
      if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
          [self presentViewController:controller animated:YES completion:nil];
      }
      //if iPad
      else {
          // Change Rect to position Popover
          UIPopoverController *popup = [[UIPopoverController alloc] initWithContentViewController:controller];
          [popup presentPopoverFromRect:CGRectMake(self.view.frame.size.width/2, self.view.frame.size.height/4, 0, 0)inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
      }
      

      注意:- UIPopoverController 在 iPhone 上不可用。来自文档:“Popover 控制器仅在 iPad 设备上使用。尝试在其他设备上创建一个会导致异常(如果您的应用仅是 iPhone,则出现此异常)。”

      参考链接:-'NSInvalidArgumentException', reason: '-[UIPopoverController initWithContentViewController:] called when not running under UIUserInterfaceIdiomPad.'

      这对你有帮助吗?

      谢谢

      【讨论】:

      • 感谢您的回复。但是,我只有 iPhone 应用程序,如果您在 iPad 上看到 iPhone 应用程序的 UI 渲染,那么 if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 在 iPad 中也无法满足此条件(如果需要,请尝试)。这是不是正确答案。我已更改为自定义 UIView,其中包含 UIActivityController 之类的动画,因为共享活动项是恒定的。
      猜你喜欢
      • 1970-01-01
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-14
      • 2016-05-06
      • 1970-01-01
      相关资源
      最近更新 更多