簡體   English   中英

iOS 8完成塊未調用

[英]ios 8 completion block not called

在我的應用程序中,我使用TTOpenInAppActivity在UIActivityController中插入“打開方式”操作。 其內部的工作方式如下:

某些視圖控制器會提供UIActivityController以及已內置的TTOpenInActivity。

-(void)openWithAction
{
    NSURL *fileURL = SOME_URL;
    CGRect rect = SOME_RECT;
    TTOpenInAppActivity *openInAppActivity = [[TTOpenInAppActivity alloc] initWithView:self.view andRect:rect];
    UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[fileURL] applicationActivities:@[openInAppActivity]];

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        // Store reference to superview (UIActionSheet) to allow dismissal
        openInAppActivity.superViewController = activityViewController;
        // Show UIActivityViewController
        [self presentViewController:activityViewController animated:YES completion:NULL];
    } else {
        // code for iPad, irrelevant
    }
}

當用戶點擊“打開方式”按鈕時,將觸發以下方法:

- (void)performActivity
{
    if(!self.superViewController){
        [self activityDidFinish:YES];
        return;
    }

    // Dismiss activity view
    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        // iPhone dismiss UIActivityViewController
        [self.superViewController dismissViewControllerAnimated:YES completion:^(void){

            if (self.fileURLs.count > 1) {
                [self openSelectFileActionSheet];
            }
            else {
                // Open UIDocumentInteractionController
                [self openDocumentInteractionControllerWithFileURL:self.fileURLs.lastObject];
            }
        }];
    } else {
        // code for iPad, irrelevant
        }
    }
}

由於該應用程序僅適用於iPhone,因此應執行以下代碼:

[self.superViewController dismissViewControllerAnimated:YES completion:^(void){

                if (self.fileURLs.count > 1) {
                    [self openSelectFileActionSheet];
                }
                else {
                    // Open UIDocumentInteractionController
                    [self openDocumentInteractionControllerWithFileURL:self.fileURLs.lastObject];
                }
}];

在iOS7中,一切正常。 在iOS8中,UIActivityController被關閉,然后什么也沒有發生。 在調試時,我確實設法檢測到從未調用過iOS8完成處理程序。

請幫我找出這種現象的原因,並使其正常工作。

先感謝您。

在iOS 8中,當您點擊“打開方式”時,UIActivityViewController會自動關閉。 因此,當您調用self.superViewController dismissViewControllerAnimated:completion: ,viewController已被關閉,方法不執行任何操作(因此未調用完成功能)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM