文档章节

iOS 调用本地系统分享

AustinKuture
 AustinKuture
发布于 2017/05/08 10:54
字数 401
阅读 104
收藏 3

1,实现效果:

2,源码(123.pfd是要分享的文件,可以根据自己需要进行自定义)


#import "ViewController.h"

@interface ViewController ()<UIDocumentInteractionControllerDelegate>

@property (nonatomic,strong)UIDocumentInteractionController *documentInteractionController;

@property (weak, nonatomic) IBOutlet UIButton *openIn;
@property (nonatomic,strong) UIButton *shareB;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    _shareB = [[UIButton alloc]initWithFrame:CGRectMake([UIScreen mainScreen].bounds.size.width * 0.5 - 75, 250, 150, 50)];
    [_shareB setTitle:@"Share" forState:UIControlStateNormal];
    _shareB.backgroundColor = [UIColor grayColor];
    [_shareB setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    [_shareB addTarget:self action:@selector(shareIn:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:_shareB];
    
}

- (IBAction)openIn:(UIButton *)sender {
    NSString *localPath = [[NSBundle mainBundle] pathForResource:@"123" ofType:@"pdf"];
    NSURL *pathUrl = [[NSURL alloc]initFileURLWithPath:localPath];
    
    // Initialize Document Interaction Controller
    self.documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:pathUrl];
    
    // Configure Document Interaction Controller
    [self.documentInteractionController setDelegate:self];
    
    // Present Open In Menu
    [self.documentInteractionController presentOptionsMenuFromRect:[self.openIn frame] inView:self.view animated:YES];
}

#pragma mark Document Interaction Controller Delegate Methods
- (UIViewController *) documentInteractionControllerViewControllerForPreview: (UIDocumentInteractionController *) controller {
    return self;
}

- (void)shareIn:(UIButton *)shareb{
    
        NSString *localPath = [[NSBundle mainBundle] pathForResource:@"123" ofType:@"pdf"];
        UIActivityViewController *activity = [[UIActivityViewController alloc] initWithActivityItems:@[localPath] applicationActivities:nil];
        UIActivityViewControllerCompletionHandler myBlock = ^(NSString *activityType,BOOL completed)
        {
            NSLog(@"调用分享的应用id :%@", activityType);
            if (completed)
            {
                NSLog(@"分享成功!");
            }
            else
            {
                NSLog(@"分享失败!");
            }
        };
        activity.completionHandler = myBlock;
        //    activity.completionWithItemsHandler = myBlock;
    
        if ([[UIDevice currentDevice].model isEqualToString:@"iPhone"]) {
            [self presentViewController:activity animated:YES completion:nil];
        }
        else if([[UIDevice currentDevice].model isEqualToString:@"iPad"])
        {
            UIPopoverPresentationController *popover = activity.popoverPresentationController;
            if (popover) {
                popover.sourceView = _shareB;
                popover.permittedArrowDirections = UIPopoverArrowDirectionUp;
            }
            [self presentViewController:activity animated:YES completion:nil];
        }
        else
        {
            //do nothing
        }

}

 

© 著作权归作者所有

共有 人打赏支持
AustinKuture
粉丝 13
博文 40
码字总数 23740
作品 0
海淀
iOS工程师
私信 提问
Bytom移动端钱包SDK开发基础

比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom Bytom-Mobile-Wallet-SDK 是从bytom源码中抽离出的钱包层代码,并且对钱包...

比原链Bytom
09/10
0
0
iOS逆向与安全(一):环境搭建

前言 从本篇文章开始,笔者会整理iOS逆向相关的笔记。作为一位新人,希望通过整理笔记能够更好的理解和掌握知识。作为新人能力有限,在行文时难免出现错误欢迎批评和指正。 前期准备 一台越狱...

紫电清霜Owenli
09/16
0
0
谷歌Flutter跨平台应用开发SDK迎来首个发行预览版本

谷歌Flutter跨平台应用开发SDK迎来首个发行预览版本 2018-06-22 12:26编辑: 枣泥布丁分类:程序人生来源:程序师 跨平台Google Flutter预览版本 招聘信息: 图像处理及模式识别工程师 C/C+...

枣泥布丁
06/22
0
0
ReactNative与iOS原生交互方式汇总

前言 最近用RN开发SDK,涉及RN与iOS各种交互。 有些交互比如用iOS原生切换多个RN页面,以及iOS调用RN的方法,按照网上的方法调不通,一度不知如何是好,网上资料比较少。 于是自己看RN源码分...

大灰狼的小绵羊哥哥
11/13
0
0
iOS与JS交互之UIWebView-协议拦截

级别:★★☆☆☆ 标签:「iOS与JS交互」「UIWebView与JS交互」「UIWebView拦截协议」 作者: Xs·H 审校: QiShare团队 先解释下标题:“iOS与JS交互”。iOS指原生代码(文章只有示例),J...

QiShare
08/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring应用学习——AOP

1. AOP 1. AOP:即面向切面编程,采用横向抽取机制,取代了传统的继承体系的重复代码问题,如下图所示,性能监控、日志记录等代码围绕业务逻辑代码,而这部分代码是一个高度重复的代码,也就...

江左煤郎
今天
3
0
eclipse的版本

Eclipse各版本代号一览表 Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。 Eclipse基本内核包括:图形API(SWT/Jface),Java开发环...

mdoo
今天
1
0
SpringBoot源码:启动过程分析(一)

本文主要分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 还是老套路,先把分析过程的时序图摆出来:时序图-SpringBoot2.10启动分析 二.源码分析 首...

Jacktanger
今天
3
0
小白带你认识netty(二)之netty服务端启动(上)

上一章 中的标准netty启动代码中,ServerBootstrap到底是如何启动的呢?这一章我们来瞅下。 server.group(bossGroup, workGroup);server.channel(NioServerSocketChannel.class).optio...

天空小小
今天
3
0
聊聊storm trident batch的分流与聚合

序 本文主要研究一下storm trident batch的分流与聚合 实例 TridentTopology topology = new TridentTopology(); topology.newStream("spout1", spout) .p......

go4it
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部