gpt4 book ai didi

ios - UIActivityViewController,事件未完成,共享选项未加载

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:37:07 25 4
gpt4 key购买 nike

我有一个带有分享按钮的应用程序。这个分享按钮加载一个 UIActivityViewController,用于分享到 Facebook、Twitter、电子邮件、短信等。

它过去工作得很好,我认为它在模拟器上仍然工作得很好,但在设备上, View Controller 会出现所有正确的选项,如果你点击一个,要么没有任何反应,要么是邮件,邮件模态视图加载然后自行关闭。然后我得到我的日志“Activity was not performed.”,这是当完成 block 返回 false 表示已完成但 activityType 不为空时。所以它正在识别选择,但由于某种原因它没有将事件加载到 View 中

我已经检查了我要分享的东西,甚至用虚拟的东西替换了它(如下所示),仍然没有运气。我使用的是普通设备,我设置了 Twitter、Mail 和 Facebook 帐户,发短信也可以。唯一可行的是复制(即当您将共享内容复制到剪贴板时)。在同一设备上的其他应用程序中,UIActivityViewController 和所选事件的加载工作正常。在运行该应用程序的其他设备上也观察到同样的问题。

真的不明白这里的问题是什么。很费解!任何尝试的帮助或建议将不胜感激。我看不到任何调试此问题的方法。

这是代码:(注意我也尝试删除图像,但没有成功)

- (void)shareTapped {

NSString *shareText = @"Testing";//[self shareText];

NSURL *url = [NSURL URLWithString:@"http://www.google.ca"]; //[self shareURL];
NSArray *activityItems = [NSArray arrayWithObjects:shareText,url, self.shareImage, nil];

UIActivityViewController *shareDrawer = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
shareDrawer.excludedActivityTypes = @[UIActivityTypePostToWeibo,UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll,UIActivityTypePrint];

shareDrawer.completionHandler = ^(NSString *activityType, BOOL completed) {
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.");
}
}

NSString *result = completed ? @"success" : @"fail";
if (activityType == NULL) {
result = @"dismissed";
}
};
[self presentViewController:shareDrawer animated:YES completion:nil];
}

最佳答案

OK,通过排除法我终于缩小了罪魁祸首:

我有一个带有自定义字体的自定义 UISegmentedControl,我手动调整了内容偏移以使其正确显示。尽管我已经删除了这些行并且分段控件实际上看起来不错。

这是代码(我已经确认是这三行导致了问题)

    [[UISegmentedControl appearance] setContentPositionAdjustment:UIOffsetMake(4, 0) forSegmentType:UISegmentedControlSegmentLeft barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setContentPositionAdjustment:UIOffsetMake(0, 0) forSegmentType:UISegmentedControlSegmentCenter barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setContentPositionAdjustment:UIOffsetMake(-4, 0) forSegmentType:UISegmentedControlSegmentRight barMetrics:UIBarMetricsDefault];

现在,看到在您选择共享选项后弹出的 View 中没有分段控件,我不知道为什么这会导致这个问题。但现在我删除它后它确实有效。

感谢那些试图提供帮助的人。当然,您不可能猜到这就是问题所在。任何人一开始都会遇到此问题的可能性非常低,因为调整内容位置可能相当罕见。

为了调试这个问题,我遵循了以下步骤:

  1. 我测试了问题是否与我设置的 UIActivityViewController 的属性或我共享的事件项目有关。它没有。
  2. 我测试了 UIActivityViewController 在我的应用程序中从不同的 View Controller 调用时是否正常工作。它没有。
  3. 我制作了一个带有按钮的空白 View Controller ,该按钮会导致在按下条形按钮时显示通用 UIActivityViewController。我把它作为我的 Root View 。这行得通,因此表明这是一个孤立的问题。
  4. 我没有将该 View Controller 作为我应用程序的根目录,而是将其从我的普通主视图中推出。它不再起作用,因此确定问题可能与我的主要观点有关。
  5. 我注释掉了 viewDidLoad、viewDidAppear 和 viewWillAppear 中的所有代码,除了向导航栏添加一个按钮以加载我的共享测试。那奏效了。然后我取消注释 viweDidAppear 和 viewWillAppear,仍然有效。所以我取消了对 viewDidLoad block 的注释,直到我弄清楚问题到底是什么。

我学到的东西:对于像这样的奇怪问题(即看起来像 iOS 错误或其他问题,但您找不到任何人发布有关它的问题),您应该在尝试发布到堆栈溢出之前花更多的时间进行调试。(我现在真的应该知道这一点,但是每一个要调试的新问题都感觉像是这条规则的异常(exception))

如果您知道为什么调整 UISegmentedControl 的内容位置会弄乱来自 UIActivityViewController 的共享,即使这些 View 不包含分段控件,请在下方评论

谢谢

关于ios - UIActivityViewController,事件未完成,共享选项未加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21394435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com