美文网首页iOS开发(OC)
iOS UIDocumentInteractionControl

iOS UIDocumentInteractionControl

作者: 搬砖的crystal | 来源:发表于2023-02-21 11:46 被阅读0次

    UIDocumentInteractionController 是 OC 语言的一个类,但是他并不是一个 controller,而是一个继承自 NSObject 类。

    1.作用

    (1)预览类似 pdfdocppt等类型文件的类。
    (2)可以将用户接收到的文件分享到用户手机上的其他 App 中。

    2.使用
    #import "ViewController.h"
    @interface ViewController ()<UIDocumentInteractionControllerDelegate>
    
    @property (nonatomic,strong)UIDocumentInteractionController * document;
    
    @end
    
    @implementation ViewController
    - (void)viewDidLoad {
        [super viewDidLoad];
        self.view.backgroundColor = [UIColor orangeColor];
        //1.指定要分享的链接
        
        NSString *filePath = [[NSBundle mainBundle] pathForResource:@"文件" ofType:@"pdf"];
        NSLog(@"data path: %@", filePath);
        self.document = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:filePath]];
        //2.设置分享代理
        self.document.delegate = self;
        //3.哪类文件支持第三方打开,这里不证明就代表所有文件!
        //    _document.UTI = @"com.microsoft.word.doc";
        //4.判断手机中有没有应用可以打开该文件并打开分享界面
        // 用户预览文件,如图1所示
        BOOL canOpen = [self.document presentPreviewAnimated:YES];
    
        // 用户不预览文件直接分享,如图2所示
    //    BOOL canOpen = [self.document presentOpenInMenuFromRect:self.view.bounds inView:self.view animated:YES];
        
        if (!canOpen) {
            NSLog(@"预览失败");
        }
        
    }
    -(BOOL)documentInteractionController:(UIDocumentInteractionController *)controller canPerformAction:(nullable SEL)action{
        // 响应方法
        NSLog(@"12 %s", __func__);
        return YES;
    }
    -(BOOL)documentInteractionController:(UIDocumentInteractionController *)controller performAction:(nullable SEL)action{
        //
        NSLog(@"13 %s", __func__);
        return YES;
    }
    -(void)documentInteractionControllerWillPresentOptionsMenu:(UIDocumentInteractionController *)controller{
        // 页面显示后响应
        NSLog(@"9 %s", __func__);
    }
    -(void)documentInteractionControllerDidDismissOptionsMenu:(UIDocumentInteractionController *)controller{
        // 取消时响应
        NSLog(@"10 %s", __func__);
    }
    -(UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller{
        NSLog(@"1 %s", __func__);
        return self;
    }
    -(UIView *)documentInteractionControllerViewForPreview:(UIDocumentInteractionController *)controller{
        NSLog(@"2 %s", __func__);
        return self.view;
    }
    -(CGRect)documentInteractionControllerRectForPreview:(UIDocumentInteractionController *)controller{
        NSLog(@"3 %s", __func__);
        return self.view.frame;
    }
    // 文件分享面板退出时调用
    -(void)documentInteractionControllerDidDismissOpenInMenu:(UIDocumentInteractionController *)controller{
        NSLog(@"4 %s", __func__);
        NSLog(@"dismiss");
    }
    // 文件分享面板弹出的时候调用
    -(void)documentInteractionControllerWillPresentOpenInMenu:(UIDocumentInteractionController *)controller{
        NSLog(@"5 %s", __func__);
        NSLog(@"WillPresentOpenInMenu");
    }
    // 当选择一个文件分享App的时候调用
    -(void)documentInteractionController:(UIDocumentInteractionController *)controller willBeginSendingToApplication:(nullable NSString *)application{
        NSLog(@"6 %s", __func__);
        NSLog(@"begin send : %@", application);
    }
    // Preview presented/dismissed on document.  Use to set up any HI underneath.
    -(void)documentInteractionControllerWillBeginPreview:(UIDocumentInteractionController *)controller{
        NSLog(@"7 %s", __func__);
    }
    -(void)documentInteractionControllerDidEndPreview:(UIDocumentInteractionController *)controller{
        // 完成时响应
        NSLog(@"8 %s", __func__);
    }
    -(void)documentInteractionController:(UIDocumentInteractionController *)controller didEndSendingToApplication:(nullable NSString *)application{
        NSLog(@"11 %s", __func__);
    }
    
    @end
    

    相关文章

      网友评论

        本文标题:iOS UIDocumentInteractionControl

        本文链接:https://www.haomeiwen.com/subject/cwbnkdtx.html