文档章节

iOS 调用本地系统分享

AustinKuture
 AustinKuture
发布于 2017/05/08 10:54
字数 401
阅读 107
收藏 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工程师
私信 提问
Phonegap各类商业插件

【Phonegap商业插件服务】[目前插件已经支持到Phonegap最新版本] 1.phonegap-百度社会化分享-andriod插件 v2.0 【该插件支持微信分享和朋友圈分享,qq好友分享,微博分享】 2.phonegap百度社...

夜澜小雨
2015/07/15
1K
0
苹果不经意间要求开发者提交针对iOS 7优化的App图标

在苹果iOS 7正式版发布之前,苹果似乎要求开发者提供尺寸更大的应用图标。作为iOS 7界面改变之一,相比iOS 6,iOS 7主 比如在下图中,我们可以看到没有针对iOS 7优化的Netflix图标周围有一丝...

oschina
2013/08/31
4K
7
Bytom移动端钱包SDK开发基础

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

比原链Bytom
2018/09/10
0
0
谷歌Flutter跨平台应用开发SDK迎来首个发行预览版本

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

枣泥布丁
2018/06/22
0
0
第一部分:如何在iOS和Android上选择一个JavaScript 引擎进行应用开发

在我开始使用OpenAphid-Engine的时候,已经有几种类似的iOS/Android 项目.这些商业项目或者开源项目使用JavaScript实现代码特性。比如,Titanium 和PhoneGap 允许开发者使用JavaScript开发本...

打杂程序猿
2013/02/01
8.7K
2

没有更多内容

加载失败,请刷新页面

加载更多

Cookie 显示用户上次访问的时间

import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.serv......

gwl_
今天
1
0
网络编程

第14天 网络编程 今日内容介绍  网络通信协议  UDP通信  TCP通信 今日学习目标  能够辨别UDP和TCP协议特点  能够说出UDP协议下两个常用类名称  能够说出TCP协议下两个常用类名称...

stars永恒
今天
1
0
二进制相关

二进制 众所周知计算机使用的是二进制,数字的二进制是如何表示的呢? 实际就是逢二进一。比如 2 用二进制就是 10。那么根据此可以推算出 5的二进制等于 10*10+1 即为 101。 在计算机中,负数以...

NotFound403
昨天
3
0
day22:

1、写一个getinterface.sh 脚本可以接受选项[i,I],完成下面任务: 1)使用格式:getinterface.sh [-i interface | -I ip] 2)当用户使用-i选项时,显示指定网卡的IP地址;当用户使用-I选项...

芬野de博客
昨天
2
0
Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现

自Spring Cloud Alibaba发布第一个Release以来,就备受国内开发者的高度关注。虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中,但是凭借阿里中间件团队的背景,还是得到不少...

程序猿DD
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部