मेरे ऐप में मैं UIActivityController के अंदर "ओपन इन" एक्शन डालने के लिए TTOpenInAppActivity का उपयोग कर रहा हूं। इसके अंदर इस तरह काम करता है:आईओएस 8 समापन ब्लॉक
कुछ दृश्य नियंत्रक के साथ TTOpenInActivity पहले से ही में बनाया गया UIActivityController प्रस्तुत
-(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
}
}
}
ऐप केवल आईफोन के लिए है, कोड का यह टुकड़ा निष्पादित किया जाना चाहिए:
[self.superViewController dismissViewControllerAnimated:YES completion:^(void){
if (self.fileURLs.count > 1) {
[self openSelectFileActionSheet];
}
else {
// Open UIDocumentInteractionController
[self openDocumentInteractionControllerWithFileURL:self.fileURLs.lastObject];
}
}];
आईओएस 7 में सबकुछ ठीक काम करता है। आईओएस 8 UIActivityController में खारिज कर दिया गया है और फिर कुछ भी नहीं होता है। डीबगिंग करते समय मैंने यह पता लगाने का प्रबंधन किया कि आईओएस 8 में पूरा होने वाले हैंडलर को कभी नहीं कहा जाता है।
कृपया, इस व्यवहार के कारण का पता लगाने में मेरी सहायता करें और इसे कार्य करें।
अग्रिम धन्यवाद।