3

我正在尝试UIDocumentInteractionController在我的应用程序上显示一个。在 iPhone 上一切正常,但在 iPad 上却什么也没有。这是我的代码:

    interactionController = [UIDocumentInteractionController interactionControllerWithURL:imageFile];
    interactionController.UTI = @"com.instagram.photo";
    interactionController.annotation = [NSDictionary dictionaryWithObject:[self commentForInstagram] forKey:@"InstagramCaption"];
    [interactionController presentOpenInMenuFromRect:self.view.frame inView:self.view animated:YES];

interactionController是对实例的强引用,并且imageFile存在。在 iPhone 上,它会弹出“打开方式...”对话框,并且 Instagram 存在。在 iPad 上,上述代码运行时绝对没有任何反应。是的,我确实安装了 Instagram 并在我的 iPad 上工作。

执行代码时什么都没有发生的原因可能是什么?self.view并且self.view.frame是有效的对象(在调试时测试)。

谢谢,坎。

4

6 回答 6

7

在 iPad 上 UIDocumentInteractionController 出现像 Pop Up 尝试这样的事情:

-(void)shareClick:(UIButton*)sender {
   /*some code*/
   CGRect rectForAppearing = [sender.superview convertRect:sender.frame toView:self.view];
   [interactionController presentOptionsMenuFromRect:rect inView:self.view animated:YES];
}
于 2013-12-22T01:06:17.213 回答
4

对于 iPad,您必须满足以下两点:

  1. 定义 DocumentActionMenu 的区域

    CGRect 矩形 = CGRectMake(0.0, 0.0, 0.0, 0.0);

    [interactionController presentOpenInMenuFromRect:rect inView:self.view Animation:YES];

  2. 使用 iPad,而不是模拟器

于 2015-07-20T21:29:00.403 回答
3

使用presentOptionsMenuFromRect:inView:animated:.

例如,如果您希望从底部显示菜单,请尝试

[interactionController presentOptionsMenuFromRect:self.view.bounds inView:self.view animated:YES];
于 2013-12-02T18:35:19.210 回答
1

我今天早些时候遇到了同样的问题。

首先,不要将frame您的视图传递给presentOptionsMenuFromRect:inView:animated. 给定的矩形应该在视图的坐标中。视图的frame位于视图的父视图的坐标中。

在 iPhone 上,传递bounds视图的工作,但在 iPad 上,Xcode (7.2.1) 会抱怨不可满足的约束并且不显示文档交互控制器的视图 (DIC)。

而不是bounds,我尝试CGRectZero作为第一个参数传递,它将 DIC 锚定在视图的左上角。这有效,但看起来很糟糕。

为了将 DIC 定位在视图底部边缘的中心,您可以指定一个大小CGSizeZero为位于视图底部边缘中心的矩形(使用视图bounds来计算位置)。这工作并且看起来不错。

于 2016-09-23T06:55:33.833 回答
0

presentOptionsMenuFromRect:inView:- 这是在谈论弹出箭头指向的位置。

view是箭头指向的view,rect是箭头指向的view里面的rect 。

一旦你明白这很容易。

- (void)shareClick:(UIButton*)sender
{
   /*some code*/
   [interactionController presentOptionsMenuFromRect:sender.bounds inView:sender animated:YES];
}

所以现在箭头将指向按钮边界的边缘。

大多数时候这是你想要的,但你可以例如插入这个矩形以在按钮内有箭头点。

于 2018-07-17T03:42:06.807 回答
-1

我遇到过同样的问题。我检查了正在传递的帧,发现 x 和 y 设置为 0。接下来我尝试更改这些值(通过保持传递的宽度和高度)并且弹出窗口出现了。这里的代码:

-(void)openDocument:(UIView*)senderView {

   CGRect rectForAppearing = [senderView convertRect:senderView.frame toView:senderView];

   if (isIPAD)
     rectForAppearing =  CGRectMake(100, 100, rectForAppearing.size.width, rectForAppearing.size.height);

   [interactionController presentOptionsMenuFromRect:rect inView:self.view animated:YES];

}

弹出窗口出现在右上角的 Ipad 上。您当然可以根据自己的意愿扭曲这 100,100 个参数。在 iPhone 上,我将弹出框保持原样(在底部)

于 2017-06-07T13:23:06.423 回答