UIDocumentInteractionController

UIDocumentInteractionController

本文介绍了UIDocumentInteractionController在“打开方式”表中阻止Airdrop的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

>



应用程序,我允许用户通过Instagram分享照片,这需要使用UIDocumentInteractionController。如果手机支持Airdrop,则会自动检测。如何从此打开操作表中删除它?



即使我开始与UIActivityViewController的共享过程,并调用setExcludedActivityTypes :,最终我必须使用UIDocumentInteractionController ,当我这样做,Airdrop再次出现。下面是分享按钮被点击时的代码:

  NSURL * instagramURL = [NSURL URLWithString:@instagram:// location ?id = 1]; 

if([[UIApplication sharedApplication] canOpenURL:instagramURL]){
NSString * documentsDirectory = [NSHomeDirectory()stringByAppendingPathComponent:@Documents];
NSString * savedImagePath = [documentsDirectory stringByAppendingPathComponent:@Image.igo];

NSData * imageData = UIImagePNGRepresentation(imageToShare);
[imageData writeToFile:savedImagePath atomically:YES];
NSURL * imageUrl = [NSURL fileURLWithPath:savedImagePath];
docController = [[UIDocumentInteractionController alloc] init];
docController.UTI = @com.instagram.exclusivegram;
docController.URL = imageUrl;
[docController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES];

}
else
{
NSLog(@no insta);
}


解决方案

你不能。我还需要禁用此选项。但在UIDocumentInteractionController它是完全不可访问。



如果用户在列表中选择了一个应用,您的应用会获得回调

   - (void)documentInteractionController:(UIDocumentInteractionController *)控制器didBeginSendingToApplication:(NSString *)应用程序

- (NSString *)应用程序

如果用户选择AirDrop, p>

In my app, I'm allowing users to share photos via Instagram, which requires the use of UIDocumentInteractionController. Airdrop is automatically detected if the phone supports it. How do I remove it from this ‘Open in’ action sheet?

Even if I begin the sharing process with a UIActivityViewController and call setExcludedActivityTypes:, eventually I must use a UIDocumentInteractionController, and when I do, Airdrop appears again. Here is the code when the share button gets tapped:

NSURL *instagramURL = [NSURL URLWithString:@"instagram://location?id=1"];

if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) {
    NSString *documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
    NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"Image.igo"];

    NSData *imageData = UIImagePNGRepresentation(imageToShare);
    [imageData writeToFile:savedImagePath atomically:YES];
    NSURL *imageUrl = [NSURL fileURLWithPath:savedImagePath];
    docController = [[UIDocumentInteractionController alloc] init];
    docController.UTI = @"com.instagram.exclusivegram";
    docController.URL = imageUrl;
    [docController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES];

}
else
{
    NSLog(@"no insta");
}
解决方案

As far as I can tell you can't. I need to disable this option also. But on UIDocumentInteractionController it is completely inaccessible. Pretty bad API experience in my book.

If the user selects an App in the list your App gets the callbacks

-(void)documentInteractionController:(UIDocumentInteractionController *)controller willBeginSendingToApplication:(NSString *)application

-(void)documentInteractionController: (UIDocumentInteractionController *)controller didEndSendingToApplication:(NSString *)application

If the user selects AirDrop you don't get notified at all.

这篇关于UIDocumentInteractionController在“打开方式”表中阻止Airdrop的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-18 20:37