UIActivityViewController有一个奇怪的大小和形状

问题描述 投票:8回答:7

我只是为我提供了这个错误报告...活动视图控制器突然出现这种奇怪的狭窄形状,无论我是在实际的手机还是视图控制器上。

Narrow view controller

这种情况发生在一些普通的香草代码中,这些代码在几个月内没有被触及:

UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[message] applicationActivities:nil];
[self presentViewController:activityViewController animated:YES completion:nil];

怎么可能出错?我甚至无法想到从哪里开始排除故障。

ios iphone uiactivityviewcontroller
7个回答
2
投票

在某些情况下可能会发生。试试这个

NSArray *Items   = [NSArray arrayWithObjects:
                    @"Checking Test App", nil];
UIActivityViewController *activity=[[UIActivityViewController alloc]initWithActivityItems:Items applicationActivities:nil];
[self presentViewController:activity animated:YES completion:nil];

要么

NSString *string = NSLocalizedString(@"shareString", nil);
UIActivityViewController *activityViewController = [[UIActivityViewController alloc]
                                                    initWithActivityItems:@[string] applicationActivities:nil];

[activityViewController setCompletionWithItemsHandler:
 ^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *error)
 {
     if ( completed ) {
         NSLog(@"sharing complete");
     } else
     {
         NSLog(@"cancelled");
     }
 }];

[self presentViewController:activityViewController animated:YES completion:^{
}];

2
投票

你试过复制这个bug吗???如果我们没有确定如何创建这个bug的确切方案,那么我们就无法为它做出解决方案!尝试更新数组中的项目并检查错误是否仍然存在......有时会发生这种类型的事情,但除非我们不重现这种情况,否则它不能被称为错误。

如果您在通用应用程序中工作,请在呈现ActivityView之前添加以下代码行

ActivityViewController.popoverPresentationController.sourceView = self.view;
[self presentViewController:activityViewController animated:YES completion:nil];

我会建议,而不是寻找解决方案首先解决问题。在此之前我从未见过如此奇怪的ActivityView行为,如果我们知道为什么会发生这种情况,那么它对每个iOS开发人员都会有所帮助。


1
投票

您应该检查自己视图的帧。可能它的宽度小于activityViewController的宽度,你得到这个bug。


1
投票

也许qazxsw poi是问题所在。你可以用qazxsw poi qazxsw poi找到你的框架。简单的解决方法可能是:

self.view.frame.size.width

1
投票

这些类型的错误确实会发生,它们确实会测试您的耐心并给您带来挑战。虽然我不能给出明确的答案,但我可以给你一些如何排除故障的提示!

我建议你首先尝试在你的开发机器上重新创建它。然后尝试四处看看是什么导致了这个问题。这里有一些要尝试的东西。

  • 在具有不同操作系统的多个设备上运行此操作,以便您可以确定模式。
  • 尝试并更改“NSLog”值,看看问题是否发生。
  • 如果您尝试从其他视图控制器创建ActivityViewController,请查看问题是否存在。
  • 浏览您的代码,看看是否有任何警告您只是被忽略了。特别是如果您使用Storyboard来创建视图。

我知道这不是一个答案,但我不能发表如此长的回应作为评论。

希望这可以帮助!


1
投票

如果您使用的是iPad,请尝试设置self.view[self.view.window.rootViewController presentViewController:activityViewController animated:YES completion:nil]; 属性

initWithActivityItems

0
投票

我可以在iOS 12上重现这个:

  1. 呈现activityViewController的控制器(在本例中为self)本身带有UIModalPresentationOverFullScreen
  2. 在self下面的演示链中的某个地方,还有另一个Activity AlertViewController。

我的解决方案是将自身切换回UIModalPresentationFullScreen。

© www.soinside.com 2019 - 2024. All rights reserved.