gpt4 book ai didi

ios - UIActivityViewController 需要很长时间才能呈现

转载 作者:IT王子 更新时间:2023-10-29 08:14:01 24 4
gpt4 key购买 nike

我为 iPhone 制作了一个应用程序。现在,我正在为 iPad 重新创建它。

当用户选择工具栏中的操作按钮时,应该会显示一个带有 UIActivityViewController 的弹出窗口,但由于某种原因,它第一次显示大约需要 10 秒。在 iPhone 上,大约需要一秒钟。除了弹出窗口外,代码相同。

我尝试禁用弹出窗口,但它仍然需要大约 10 秒才能显示。

代码如下:

-(IBAction)Actions:(UIBarButtonItem*)sender 
{
if ([activityPopover isPopoverVisible] == YES)
{
[activityPopover dismissPopoverAnimated:YES];
return;
}
UIWebView *currentWebView = ((TabView *)self.tabs[self.currentTabIndex]).webViewObject;

NSString *currentURL = (NSString*)[currentWebView request].mainDocumentURL;
if (currentURL == NULL) return;

BookmarkActivity *bookmarkActivity = [[BookmarkActivity alloc] init];

UIActivityViewController *sharing = [[UIActivityViewController alloc] initWithActivityItems:[NSArray arrayWithObject:currentURL] applicationActivities:@[bookmarkActivity]];

activityPopover = [[UIPopoverController alloc] initWithContentViewController:sharing];
[activityPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}

我已经在我的 iPad 3 和我的 iPad mini 上进行了测试,都需要一些时间来展示这一点。

我该如何解决这个问题?

最佳答案

好问题,我刚遇到同样的问题。这不是真正可以解决的。但是,您可以通过创建事件指示器然后将 UIActivityViewController 的初始化发送到后台来改善用户体验:

-(void)openIn:(id)sender
{
// start activity indicator
[self.activityIndicator startAnimating];

// create new dispatch queue in background
dispatch_queue_t queue = dispatch_queue_create("openActivityIndicatorQueue", NULL);

// send initialization of UIActivityViewController in background
dispatch_async(queue, ^{
NSArray *dataToShare = @[@"MyData"];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:dataToShare applicationActivities:nil];

// when UIActivityViewController is finally initialized,
// hide indicator and present it on main thread
dispatch_async(dispatch_get_main_queue(), ^{
[self.activityIndicator stopAnimating];
[self presentViewController:activityViewController animated:YES completion:nil];
});
});
}

它就像一个魅力。当用户触摸按钮时,事件指示器开始动画,从而表明该过程需要一段时间。

关于ios - UIActivityViewController 需要很长时间才能呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13907156/

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