精华内容
下载资源
问答
  • 实现了无需flash兼容主流浏览器进行JS的复制到剪切板操作 DEMO说明:http://blog.csdn.net/qq_22445455/article/details/52400342
  • 案例已做手机端浏览器兼容处理经测试,[QQ,微信,苹果,360,UC等],可正常使用; 案例代码如下: <!DOCTYPE html>...

    开发需求:手机端,点击按钮实现需复制的文本内容;
    案例已做手机端浏览器兼容处理经测试,[QQ,微信,苹果,360,UC等],可正常使用;

    案例代码如下:****(使用时:请调试到手机模式)

    案列1:单个复制

    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta name="screen-orientation" content="portrait">
        <meta name="format-detection" content="telephone=no">
        <meta name="browsermode" content="application">
        <meta name="x5-page-mode" content="app">
        <title>手机端文案复制</title>
        <style>
            body{ max-width: 640px; margin: 0 auto;}
            .copy-pp{ color: #666; line-height: 1.2;}
            .copy-btn{ background-color: cornflowerblue; color: #fff;}
            .copy-text{ opacity: 0;}
        </style>
    </head>
    <body>
    
    <!--使用时:请调试到手机模式:-->
    
    <div class="copy-pp" id="copy-pp">
        即使是一块牛肉,也应该有自己的态度,要慎其独,要善其身,要知道精彩的人生不能只有精肉,
        还要有适宜的肥油做调配,有雪白的肉筋做环绕,并且还要掌握跳进煎锅时的角度,姿势,以及火候,
        才能最终成为一块优秀道地的西冷牛排~
    </div>
    
    <button type="button" class="copy-btn" id="copy-btn" onclick="jsCopy(this)">点击复制分享链接</button>
    
    <textarea class="copy-text" id="copy-text" value="" readonly="readonly"></textarea>
    
    <script>
        function jsCopy(obj){
            var u = navigator.userAgent;
            //苹果
            if (u.match(/(iPhone|iPod|iPad);?/i)) {
                var copyDOM = document.getElementById("copy-pp");  //要复制文字的节点
                var range = document.createRange();
                // 选中需要复制的节点
                range.selectNode(copyDOM);
                // 执行选中元素
                window.getSelection().addRange(range);
                // 执行 copy 操作
                var successful = document.execCommand('copy');
                try {
                    var msg = successful ? '成功' : '失败';
                    console.log(msg);
                } catch(err) {
                    console.log(err);
                }
                // 移除选中的元素
                window.getSelection().removeAllRanges();
                obj.innerHTML = '已复制';
            }
    
            // 安卓
            if(u.indexOf('Android') > -1 ){
                var $copyText = document.getElementById("copy-text"),
                    $copyPP = document.getElementById("copy-pp");
                $copyText.innerHTML = $copyPP.innerHTML.replace(/<[^>]+>/g,"");
                $copyText.select(); // 选择对象
                document.execCommand("Copy"); // 执行浏览器复制命令
                obj.innerHTML = '已复制';
            }
            // 安卓系统的UC浏览器
            if(u.indexOf('Android') > -1 && u.indexOf('UCBrowser') > -1){
                obj.innerHTML = '点击复制分享链接';
                alert('若点击复制分享链接无效,请长按内容手动复制!');
            }
        }
    </script>
    
    </body>
    </html>
    

    案列2:多个复制

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta name="screen-orientation" content="portrait">
        <meta name="format-detection" content="telephone=no">
        <meta name="browsermode" content="application">
        <meta name="x5-page-mode" content="app">
        <title>手机端文案复制</title>
        <style>
            body{ max-width: 640px; margin: 0 auto;}
            ul,li{ list-style: none; padding: 0; margin: 0;}
            .copy-demo{ width: 100%; height: auto; overflow: hidden;}
            .li{ padding: 20px; border-bottom: 1px solid #f0f0f0; overflow: hidden;}
            .copy-pp{ color: #666; line-height: 1.2;}
            .copy-btn{ background-color: cornflowerblue; color: #fff;}
            .copy-text{ opacity: 0;}
        </style>
    </head>
    <body>
    
    <!--使用时:请调试到手机模式:-->
    
    <!--copy-demo-->
    <section class="copy-demo">
        <ul class="ul">
            <li class="li">
                <div class="copy-pp" >
                    1.上得了厅堂,下得了厨房,杀得了木马,翻得了围墙,开得了汽车,买得起洋房,斗得了小三,打得赢流氓。
                </div>
                <button type="button" class="copy-btn js-copy-btn">点击复制文字</button>
                <textarea class="copy-text" value="" readonly="readonly"></textarea>
            </li>
            <li class="li">
                <div class="copy-pp" >
                    2.人的一生都会扮演很多角色,如果你不高兴,你可以把剧本扔了。不过记住,有一份剧本是真真属于你的,千万别丢错了。
                </div>
                <button type="button" class="copy-btn js-copy-btn">点击复制文字</button>
                <textarea class="copy-text" value="" readonly="readonly"></textarea>
            </li>
            <li class="li">
                <div class="copy-pp" >
                    3.现在演戏的都去唱歌了,唱不了歌的都去写书了,写不了书的都去演戏了,演不了戏的就又去唱歌了。演艺圈是个圈嘛。
                </div>
                <button type="button" class="copy-btn js-copy-btn">点击复制文字</button>
                <textarea class="copy-text" value="" readonly="readonly"></textarea>
            </li>
    
        </ul>
    </section>
    
    
    <script type="text/javascript">
        // 复制文案功能:
        const jsCopy = function(obj) {
    
            function fn() {
                var u = navigator.userAgent;
                //苹果
                if (u.match(/(iPhone|iPod|iPad);?/i)) { //ios
                    //   alert('苹果啊');
                    //要复制文字的节点
                    var copyDOM = obj.parentNode.children[0];
    
                    var range = document.createRange();
                    // 选中需要复制的节点
                    range.selectNode(copyDOM);
                    // 执行选中元素
                    window.getSelection().addRange(range);
                    // 执行 copy 操作
                    var successful = document.execCommand('copy');
                    try {
                        var msg = successful ? 'successful' : 'unsuccessful';
                        console.log('copy is' + msg);
                    } catch(err) {
                        console.log('Oops, unable to copy');
                    }
                    // 移除选中的元素
                    window.getSelection().removeAllRanges();
                    obj.innerHTML = '已复制'
    
                }
                // 安卓
                if(u.indexOf('Android') > -1 ){
                    //alert('安卓啊');
                    var $copyPP = obj.parentNode.children[0],
                        $copyText = obj.parentNode.children[2];
                    $copyText.innerHTML = $copyPP.innerHTML.replace(/<[^>]+>/g,"");
    
                    $copyText.select(); // 选择对象
                    document.execCommand("Copy"); // 执行浏览器复制命令
                    obj.innerHTML = '已复制';
                }
                // 安卓系统的UC浏览器
                if(u.indexOf('Android') > -1 && u.indexOf('UCBrowser') > -1){
                    obj.innerHTML = '点击复制文案';
                    alert('若点击复制文案无效,请长按内容手动复制!');
                }
            }
    
            obj.addEventListener('click', fn, false);
        };
    
        //
        let copyBtns = document.querySelectorAll('.js-copy-btn');
        copyBtns.forEach((obj) => {
            jsCopy(obj);
    
        });
    </script>
    
    

    ps:
    js复制页面内容-图片文字-插件clipboard.js
    vue-仿淘宝收货地址,设置默认地址

    源码会持续更新到公众号,需要可以关注一下哦…
    在这里插入图片描述

    展开全文
  • js剪切板使用

    2017-04-10 11:08:59
    最近项目想实现一个编辑器,里面有个功能是可以将qq截图,或图片粘贴到文本编辑器中,这里涉及到剪切板的使用,原来没有接触过这方面的知识,现做个小例子,记录一下。 js提供了操作客户端剪切板的内容,但只支持IE...

    最近项目想实现一个编辑器,里面有个功能是可以将qq截图,或图片粘贴到文本编辑器中,这里涉及到剪切板的使用,原来没有接触过这方面的知识,现做个小例子,记录一下。
    js提供了操作客户端剪切板的内容,但只支持IE5以上,而且ie和w3c标准浏览器是实现方式又有所不同。
    粘贴文本没有问题,可是粘贴图片就有问题了,IE剪切板里只支持文本,所以目前在IE浏览器下,一些富文本编辑器会提示不支持IE浏览器或需要安装一些插件。在这个例子中我们也仿照这种方式,如果想在IE浏览器中粘贴图片,会提示不支持。

    页面首先准备一个可编辑的div

    <div contentEditable="true" id="testInput" style="height: 300px;border: 1px solid;overflow: auto;"> type here</div>

    选择用可编辑的div来展示例子是因为,textarea不支持插入图片,div标签配置了contentEditable=”true”这个属性可以进行编辑,再加上一些样式调整可以很好的模拟一个编辑框
    js代码:

    <script type="text/javascript">
    (function(){
        var imgReader = function( item ){
            var blob = item.getAsFile(),
            reader = new FileReader();
    
            reader.onload = function( e ){
                var img = new Image();
    
                img.src = e.target.result;
               // document.body.appendChild( img );
                document.getElementById( 'testInput' ).appendChild( img );
            };
    
            reader.readAsDataURL( blob );
        };
    
         if((navigator.userAgent.indexOf('MSIE') >= 0) 
            && (navigator.userAgent.indexOf('Opera') < 0)){
            //ie浏览器
            document.getElementById( 'testInput' ).attachEvent( 'onkeydown', function( e ){
                   var keyCode;
                     var keychar;
    
                keyCode = window.event ? e.keyCode : e.which;
                keychar = String.fromCharCode(keyCode);
                if(e.keyCode == 86 && e.ctrlKey){
                    console.log("您按了Ctrl+v");              
                            //ie浏览器
                            var ieclipboard=window.clipboardData;  //ie获取剪切板
                            if(ieclipboard.getData("text")==null){
                                alert("该编辑器不支持ie浏览器");
                            }
                    }
    
                 });     
    
                 }else{
                 document.getElementById( 'testInput' ).addEventListener( 'paste', pasteImage);
            };
        var pasteImage= function pasteImage(e){
             var clipboardData = e.clipboardData,
                i = 0,
                items, item, types;
    
            if( clipboardData ){
                items = clipboardData.items;
    
                if( !items ){
                    return;
                }
    
                item = items[0];
                types = clipboardData.types || [];
    
                for( ; i < types.length; i++ ){
                    if( types[i] === 'Files' ){
                        item = items[i];
                        break;
                    }
                }
    
                if( item && item.kind === 'file' && item.type.match(/^image\//i) ){
                    imgReader( item );
                }
            }
        };
    })();  
    
    </script>

    其中,js代码位置一定要注意,写在div标签后面,原来没注意js加载顺序问题,将这段代码写在前面总是找不到这个div。

    代码逻辑主要是添加了两个监听器:

    1、如果是IE浏览器,监听ctrl+v组合键监听,并判断如果此时剪贴板中有文本内容(剪贴板中后面进来的内容会覆盖前一个的内容),则进行正常的粘贴,如果没有(可以要粘贴的是图片),则提示ie浏览器不支持。IE获取剪切板的方式为window.clipboardData

    这里还需要说明一下,原来本打算添加如下方法来监听粘贴事件,后来发现ie只有在剪贴板里有文本内容才会触发粘贴方法,有图片不会触发onpaste方法,所以改用组合键监听来出来粘贴事件。

    document.getElementById( 'testInput' ).attachEvent( 'onpaste', function( e ){alert("触发了粘贴方法")});//ie只有在剪贴板里有文本内容才会触发粘贴方法,有图片不会触发

    2、如果是非IE浏览器,添加paste监听方法来试下粘贴图片功能。显示图片的方法也是参考前辈实现的方法,用readAsDataURL方法将图片转化成base64编码添加到页面中。这里就不做详细介绍了。

    展开全文
  • IOS剪切板

    2012-05-22 17:33:36
    比如你可以从iPhone QQ复制一个url,然后粘贴到safari浏览器中查看这个链接的内容。 一、在iOS中下面三个控件,自身就有复制-粘贴的功能: 1、UITextView 2、UITextField 3、UIWebView 二、UIKit

    本文来自:http://zhuqil.cnblogs.com

    在iOS中,可以使用剪贴板实现应用程序之中以及应用程序之间实现数据的共享。比如你可以从iPhone QQ复制一个url,然后粘贴到safari浏览器中查看这个链接的内容。

    一、在iOS中下面三个控件,自身就有复制-粘贴的功能:

    1、UITextView
    2、UITextField
    3、UIWebView

    二、UIKit framework提供了几个类和协议方便我们在自己的应用程序中实现剪贴板的功能。

    1、UIPasteboard:我们可以向其中写入数据,也可以读取数据

    2、UIMenuController:显示一个快捷菜单,用来复制、剪贴、粘贴选择的项。

    3、UIResponder中的 canPerformAction:withSender:用于控制哪些命令显示在快捷菜单中。

    4、当快捷菜单上的命令点击的时候,UIResponderStandardEditActions将会被调用。

    三、下面这些项能被放置到剪贴板中

    1、UIPasteboardTypeListString —  字符串数组, 包含kUTTypeUTF8PlainText
    2、UIPasteboardTypeListURL —   URL数组,包含kUTTypeURL
    3、UIPasteboardTypeListImage —   图形数组, 包含kUTTypePNG 和kUTTypeJPEG
    4、UIPasteboardTypeListColor —   颜色数组

    四、剪贴板的类型分为两种:

    系统级:使用UIPasteboardNameGeneral和UIPasteboardNameFind创建,系统级的剪贴板,当应用程序关闭,或者卸载时,数据都不会丢失。

    应用程序级:通过设置,可以让数据在应用程序关闭之后仍然保存在剪贴板中,但是应用程序卸载之后数据就会失去。我们可用通过pasteboardWithName:create:来创建。

    了解这些之后,下面通过一系列的例子来说明如何在应用程序中使用剪贴板。

    例子:

    1、复制剪贴文本。

        下面通过一个例子,可以在tableview上显示一个快捷菜单,上面只有复制按钮,复制tableview上的数据之后,然后粘贴到title上。

    定义一个单元格类CopyTableViewCell,在这个类的上显示快捷菜单,实现复制功能。

    @interface CopyTableViewCell : UITableViewCell {
        id delegate;
    }
    @property (nonatomic, retain) id delegate;
    @end

    实现CopyTableViewCell :

    #import "CopyTableViewCell.h"
    
    @implementation CopyTableViewCell
    
    @synthesize delegate;
    
    - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
        if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) {
        }
        return self;
    }
    - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
        [super setSelected:selected animated:animated];
    }
    - (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated {
        [[self delegate] performSelector:@selector(showMenu:) 
                              withObject:self afterDelay:0.9f];
        
        [super setHighlighted:highlighted animated:animated];
    
    }
    - (BOOL)canBecomeFirstResponder 
    {
        return YES;
    }
    - (BOOL)canPerformAction:(SEL)action withSender:(id)sender{
        if (action == @selector(cut:)){
            return NO;
        } 
        else if(action == @selector(copy:)){
            return YES;
        } 
        else if(action == @selector(paste:)){
            return NO;
        } 
        else if(action == @selector(select:)){
            return NO;
        } 
        else if(action == @selector(selectAll:)){
            return NO;
        }
        else 
        {
            return [super canPerformAction:action withSender:sender];
        }
    }
    - (void)copy:(id)sender {
        UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
        [pasteboard setString:[[self textLabel]text]];
    }
    - (void)dealloc {
        [super dealloc];
    }
    @end

     

    定义CopyPasteTextController,实现粘贴功能。

    @interface CopyPasteTextController : UIViewController<UITableViewDelegate> {
        //用来标识是否显示快捷菜单
        BOOL menuVisible;
        UITableView *tableView;
    }
    
    @property (nonatomic, getter=isMenuVisible) BOOL menuVisible;
    
    @property (nonatomic, retain) IBOutlet UITableView *tableView;
    @end 

    实现CopyPasteTextController :

    #import "CopyPasteTextController.h"
    #import "CopyTableViewCell.h"
    
    @implementation CopyPasteTextController
    @synthesize menuVisible,tableView;
    - (void)viewDidLoad {
        [super viewDidLoad];
        [self setTitle:@"文字复制粘贴"];
        //点击这个按钮将剪贴板的内容粘贴到title上
        UIBarButtonItem *addButton = [[[UIBarButtonItem alloc] 
                                          initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh
                                          target:self
                                          action:@selector(readFromPasteboard:)] 
                                         autorelease];
        [[self navigationItem] setRightBarButtonItem:addButton];
    }
    
    
    // Customize the number of sections in the table view.
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        return 1;
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return 9;
    }
    
    // Customize the appearance of table view cells.
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *CellIdentifier =@"Cell";
        CopyTableViewCell *cell = (CopyTableViewCell *)[tableView 
                                                               dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) 
        {
            cell = [[[CopyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
            [cell setDelegate:self];
        }
        
        // Configure the cell.
        NSString *text = [NSString stringWithFormat:@"Row %d", [indexPath row]];
        [[cell textLabel] setText:text];
        return cell;
    }
    
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if([self isMenuVisible])
        {
            return;
        }
        [[[self tableView] cellForRowAtIndexPath:indexPath] setSelected:YES 
                                                               animated:YES];
    }
    //显示菜单
    - (void)showMenu:(id)cell {
        if ([cell isHighlighted]) {
            [cell becomeFirstResponder];
            
            UIMenuController * menu = [UIMenuController sharedMenuController];
            [menu setTargetRect: [cell frame] inView: [self view]];
            [menu setMenuVisible: YES animated: YES];
        }
    }
    - (void)readFromPasteboard:(id)sender {
        [self setTitle:[NSString stringWithFormat:@"Pasteboard = %@", 
                          [[UIPasteboard generalPasteboard] string]]];
    }
    
    - (void)didReceiveMemoryWarning
    {
        // Releases the view if it doesn't have a superview.
        [super didReceiveMemoryWarning];
        
        // Relinquish ownership any cached data, images, etc that aren't in use.
    }
    
    - (void)viewDidUnload
    {
        [super viewDidUnload];
        [self.tableView release];
        
        // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand.
        // For example: self.myOutlet = nil;
    }

    效果:

    复制一行数据:

    点击右上角的按钮粘贴,将数据显示在title上:

    2、图片复制粘贴

       下面通过一个例子,将图片复制和剪贴到另外一个UIImageView中间。

    1、在界面上放置两个uiimageview,一个是图片的数据源,一个是将图片粘贴到的地方。CopyPasteImageViewController 代码如下:

    @interface CopyPasteImageViewController : UIViewController {
        UIImageView *imageView;
        UIImageView *pasteView;
        UIImageView *selectedView;
    }
    @property (nonatomic, retain) IBOutlet UIImageView *imageView;
    @property (nonatomic, retain) IBOutlet UIImageView *pasteView;
    @property (nonatomic, retain) UIImageView *selectedView;
    - (void)placeImageOnPasteboard:(id)view;
    @end

    2、当触摸图片的时候我们显示快捷菜单:

    - (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
        NSSet *copyTouches = [event touchesForView:imageView];
        NSSet *pasteTouches = [event touchesForView:pasteView];
        
        [self becomeFirstResponder];
        if ([copyTouches count] > 0) {
            [self performSelector:@selector(showMenu:) 
                       withObject:imageView afterDelay:0.9f];
        }
        else  if([pasteTouches count] > 0) {
            [self performSelector:@selector(showMenu:) 
                       withObject:pasteView afterDelay:0.9f];
        }
        [super touchesBegan:touches withEvent:event];
    }
    
    - (void)showMenu:(id)view {
        [self setSelectedView:view];
        
        UIMenuController * menu = [UIMenuController sharedMenuController];
        [menu setTargetRect: CGRectMake(5, 10, 1, 1) inView: view];
        [menu setMenuVisible: YES animated: YES];
    }

    这里的快捷菜单,显示三个菜单项:剪贴、粘贴、复制:

    - (BOOL)canPerformAction:(SEL)action withSender:(id)sender{
        if (action == @selector(cut:)) {
            return ([self selectedView] == imageView) ? YES : NO;
        } else if (action == @selector(copy:)) {
            return ([self selectedView] == imageView) ? YES : NO;
        } else if (action == @selector(paste:)) {
            return ([self selectedView] == pasteView) ? YES : NO;
        } else if (action == @selector(select:)) {
            return NO;
        } else if (action == @selector(selectAll:)) {
            return NO;
        } else {
            return [super canPerformAction:action withSender:sender];
        }
    }
    - (void)cut:(id)sender {
        [self copy:sender];
        [imageView setHidden:YES];
    }
    - (void)copy:(id)sender {
        [self placeImageOnPasteboard:[self imageView]];
    }
    - (void)paste:(id)sender {
        UIPasteboard *appPasteBoard = 
        [UIPasteboard pasteboardWithName:@"CopyPasteImage" create:YES];
        NSData *data =[appPasteBoard dataForPasteboardType:@"com.marizack.CopyPasteImage.imageView"];
        pasteView.image = [UIImage imageWithData:data];
    }

    效果:

    1、点击图片,显示菜单按钮。

    2、点击复制,将数据复制到剪贴板上:

    3、点击粘贴,将数据粘贴到uiimageview上。

    总结:本文详解了iOS系统应用程序中如何使用剪贴板。



    展开全文
  • ios开发-剪切板

    2014-01-06 11:47:34
    比如你可以从iPhone QQ复制一个url,然后粘贴到safari浏览器中查看这个链接的内容。 一、在iOS中下面三个控件,自身就有复制-粘贴的功能: 1、UITextView 2、UITextField 3、UIWebView 二、UIKit framework提供...
    
    在iOS中,可以使用剪贴板实现应用程序之中以及应用程序之间实现数据的共享。比如你可以从iPhone QQ复制一个url,然后粘贴到safari浏览器中查看这个链接的内容。

    一、在iOS中下面三个控件,自身就有复制-粘贴的功能:

    1、UITextView
    2、UITextField
    3、UIWebView

    二、UIKit framework提供了几个类和协议方便我们在自己的应用程序中实现剪贴板的功能。

    1、UIPasteboard:我们可以向其中写入数据,也可以读取数据

    2、UIMenuController:显示一个快捷菜单,用来复制、剪贴、粘贴选择的项。

    3、UIResponder中的 canPerformAction:withSender:用于控制哪些命令显示在快捷菜单中。

    4、当快捷菜单上的命令点击的时候,UIResponderStandardEditActions将会被调用。

    三、下面这些项能被放置到剪贴板中

    1、UIPasteboardTypeListString —  字符串数组, 包含kUTTypeUTF8PlainText
    2、UIPasteboardTypeListURL —   URL数组,包含kUTTypeURL
    3、UIPasteboardTypeListImage —   图形数组, 包含kUTTypePNG 和kUTTypeJPEG
    4、UIPasteboardTypeListColor —   颜色数组

    四、剪贴板的类型分为两种:

    系统级:使用UIPasteboardNameGeneral和UIPasteboardNameFind创建,系统级的剪贴板,当应用程序关闭,或者卸载时,数据都不会丢失。

    应用程序级:通过设置,可以让数据在应用程序关闭之后仍然保存在剪贴板中,但是应用程序卸载之后数据就会失去。我们可用通过pasteboardWithName:create:来创建。

    了解这些之后,下面通过一系列的例子来说明如何在应用程序中使用剪贴板。

    例子:

    1、复制剪贴文本。

        下面通过一个例子,可以在tableview上显示一个快捷菜单,上面只有复制按钮,复制tableview上的数据之后,然后粘贴到title上。

    定义一个单元格类CopyTableViewCell,在这个类的上显示快捷菜单,实现复制功能。

    @interface CopyTableViewCell : UITableViewCell {
        id delegate;
    }
    @property (nonatomic, retain) id delegate;
    @end

    实现CopyTableViewCell :

    复制代码
    #import "CopyTableViewCell.h"
    
    @implementation CopyTableViewCell
    
    @synthesize delegate;
    
    - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
        if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) {
        }
        return self;
    }
    - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
        [super setSelected:selected animated:animated];
    }
    - (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated {
        [[self delegate] performSelector:@selector(showMenu:) 
                              withObject:self afterDelay:0.9f];
        
        [super setHighlighted:highlighted animated:animated];
    
    }
    - (BOOL)canBecomeFirstResponder 
    {
        return YES;
    }
    - (BOOL)canPerformAction:(SEL)action withSender:(id)sender{
        if (action == @selector(cut:)){
            return NO;
        } 
        else if(action == @selector(copy:)){
            return YES;
        } 
        else if(action == @selector(paste:)){
            return NO;
        } 
        else if(action == @selector(select:)){
            return NO;
        } 
        else if(action == @selector(selectAll:)){
            return NO;
        }
        else 
        {
            return [super canPerformAction:action withSender:sender];
        }
    }
    - (void)copy:(id)sender {
        UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
        [pasteboard setString:[[self textLabel]text]];
    }
    - (void)dealloc {
        [super dealloc];
    }
    @end
    复制代码

    定义CopyPasteTextController,实现粘贴功能。

    复制代码
    @interface CopyPasteTextController : UIViewController<UITableViewDelegate> {
        //用来标识是否显示快捷菜单
        BOOL menuVisible;
        UITableView *tableView;
    }
    
    @property (nonatomic, getter=isMenuVisible) BOOL menuVisible;
    
    @property (nonatomic, retain) IBOutlet UITableView *tableView;
    @end 
    复制代码

    实现CopyPasteTextController :

    复制代码
    #import "CopyPasteTextController.h"
    #import "CopyTableViewCell.h"
    
    @implementation CopyPasteTextController
    @synthesize menuVisible,tableView;
    - (void)viewDidLoad {
        [super viewDidLoad];
        [self setTitle:@"文字复制粘贴"];
        //点击这个按钮将剪贴板的内容粘贴到title上
        UIBarButtonItem *addButton = [[[UIBarButtonItem alloc] 
                                          initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh
                                          target:self
                                          action:@selector(readFromPasteboard:)] 
                                         autorelease];
        [[self navigationItem] setRightBarButtonItem:addButton];
    }
    
    
    // Customize the number of sections in the table view.
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        return 1;
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return 9;
    }
    
    // Customize the appearance of table view cells.
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *CellIdentifier =@"Cell";
        CopyTableViewCell *cell = (CopyTableViewCell *)[tableView 
                                                               dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) 
        {
            cell = [[[CopyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
            [cell setDelegate:self];
        }
        
        // Configure the cell.
        NSString *text = [NSString stringWithFormat:@"Row %d", [indexPath row]];
        [[cell textLabel] setText:text];
        return cell;
    }
    
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if([self isMenuVisible])
        {
            return;
        }
        [[[self tableView] cellForRowAtIndexPath:indexPath] setSelected:YES 
                                                               animated:YES];
    }
    //显示菜单
    - (void)showMenu:(id)cell {
        if ([cell isHighlighted]) {
            [cell becomeFirstResponder];
            
            UIMenuController * menu = [UIMenuController sharedMenuController];
            [menu setTargetRect: [cell frame] inView: [self view]];
            [menu setMenuVisible: YES animated: YES];
        }
    }
    - (void)readFromPasteboard:(id)sender {
        [self setTitle:[NSString stringWithFormat:@"Pasteboard = %@", 
                          [[UIPasteboard generalPasteboard] string]]];
    }
    
    - (void)didReceiveMemoryWarning
    {
        // Releases the view if it doesn't have a superview.
        [super didReceiveMemoryWarning];
        
        // Relinquish ownership any cached data, images, etc that aren't in use.
    }
    
    - (void)viewDidUnload
    {
        [super viewDidUnload];
        [self.tableView release];
        
        // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand.
        // For example: self.myOutlet = nil;
    }
    复制代码

    效果:

    复制一行数据:

    点击右上角的按钮粘贴,将数据显示在title上:

    2、图片复制粘贴

       下面通过一个例子,将图片复制和剪贴到另外一个UIImageView中间。

    1、在界面上放置两个uiimageview,一个是图片的数据源,一个是将图片粘贴到的地方。CopyPasteImageViewController 代码如下:

    复制代码
    @interface CopyPasteImageViewController : UIViewController {
        UIImageView *imageView;
        UIImageView *pasteView;
        UIImageView *selectedView;
    }
    @property (nonatomic, retain) IBOutlet UIImageView *imageView;
    @property (nonatomic, retain) IBOutlet UIImageView *pasteView;
    @property (nonatomic, retain) UIImageView *selectedView;
    - (void)placeImageOnPasteboard:(id)view;
    @end
    复制代码

    2、当触摸图片的时候我们显示快捷菜单:

    复制代码
    - (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
        NSSet *copyTouches = [event touchesForView:imageView];
        NSSet *pasteTouches = [event touchesForView:pasteView];
        
        [self becomeFirstResponder];
        if ([copyTouches count] > 0) {
            [self performSelector:@selector(showMenu:) 
                       withObject:imageView afterDelay:0.9f];
        }
        else  if([pasteTouches count] > 0) {
            [self performSelector:@selector(showMenu:) 
                       withObject:pasteView afterDelay:0.9f];
        }
        [super touchesBegan:touches withEvent:event];
    }
    
    - (void)showMenu:(id)view {
        [self setSelectedView:view];
        
        UIMenuController * menu = [UIMenuController sharedMenuController];
        [menu setTargetRect: CGRectMake(5, 10, 1, 1) inView: view];
        [menu setMenuVisible: YES animated: YES];
    }
    复制代码

    这里的快捷菜单,显示三个菜单项:剪贴、粘贴、复制:

    复制代码
    - (BOOL)canPerformAction:(SEL)action withSender:(id)sender{
        if (action == @selector(cut:)) {
            return ([self selectedView] == imageView) ? YES : NO;
        } else if (action == @selector(copy:)) {
            return ([self selectedView] == imageView) ? YES : NO;
        } else if (action == @selector(paste:)) {
            return ([self selectedView] == pasteView) ? YES : NO;
        } else if (action == @selector(select:)) {
            return NO;
        } else if (action == @selector(selectAll:)) {
            return NO;
        } else {
            return [super canPerformAction:action withSender:sender];
        }
    }
    - (void)cut:(id)sender {
        [self copy:sender];
        [imageView setHidden:YES];
    }
    - (void)copy:(id)sender {
        [self placeImageOnPasteboard:[self imageView]];
    }
    - (void)paste:(id)sender {
        UIPasteboard *appPasteBoard = 
        [UIPasteboard pasteboardWithName:@"CopyPasteImage" create:YES];
        NSData *data =[appPasteBoard dataForPasteboardType:@"com.marizack.CopyPasteImage.imageView"];
        pasteView.image = [UIImage imageWithData:data];
    }
    复制代码

    效果:

    1、点击图片,显示菜单按钮。

    2、点击复制,将数据复制到剪贴板上:

    3、点击粘贴,将数据粘贴到uiimageview上。

    展开全文
  • QQ复制一个url,然后粘贴到safari浏览器中查看这个链接的内容。 概述  在iOS中下面三个控件,自身就有复制-粘贴的功能: 1、UITextView 2、UITextField 3、UIWebView UIKit framework提供了几个...
  • aIE安全绿色浏览器

    2010-05-18 14:35:18
    但是,你见过可以像QQ一样进行文件传送和文字聊天的浏览器吗?你又是否见过一款浏览器它既可以给你提供轻松自在的音乐,又能给你提供大量经典的语音书籍呢? 据悉,2009年1月31日,慧声网www.huis5.com将推出一款...
  • rapid-image Chrome浏览器下的文件快速上传工具,后台使用nodejs 使用方法: 运行server.js 使用QQ截图、Lync截图、或者PrintScreen,复制一张图片到剪切板 打开浏览器: Ctrl+V复制到页面,即可上传到服务器
  • 很多小伙伴都用过QQ浏览器、UC浏览器以及搜狗浏览器,除了这些主流的浏览器你还用过哪些呢?今天小编就给大家推荐几款的浏览器,小巧好用,功能强大,还具有很多实用的功能。 米侠浏览器 一款绿色安全的全能型...
  • aIE浏览器v2.0版

    2010-05-21 09:52:32
    但是,你见过可以像QQ 一样进行文件传送和文字聊天的浏览器吗?你又是否见过一款浏览器它既可以给你提供轻松自在的音乐,又 能给你提供大量经典的语音书籍呢? 据悉,2009年1月31日,慧声网www.huis5.com将推出一...
  • 前几天遇到了一个js复制在不同浏览器下行为不同问题,花了几个小时看问题,最后发现竟然是js在ajax中执行剪切板操作会有问题。 场景是这样的:复制的内容是可配置的,所以进行复制操作前需要进行请求。 具体问题:...
  • 2013-12-24实现QQ截屏

    2013-12-24 16:04:07
    很多时候登QQ只是为了截图..虽然系统有截屏键,浏览器什么的都有截屏插件,但总觉得QQ是做的做好的。...于是周六周末摸索着自己实现了一下它的两个基本功能,截屏到剪切板和保存到文件。参考了两个版本的代码 。一
  • 2016第22周日

    2016-05-29 23:40:00
    晚上睡前用QQ浏览器写了不少内容,结果一不小心退出了浏览器界面,导致之前洗的内容都没有了,浏览器本身在输入法上的剪切板应该是保存有之前内容的,结果有bug用不了,那就先这样吧。...
  • 6.1.2复制到剪切板选项测试 41 6.1.3编辑选项测试 42 6.2测试评价 42 结论 43 参考文献 44 致谢 45 外文引用 46 中文翻译 55 1. 绪论 截图,就是绝对的记录计算机某一的区域画面,以图片的方式进行存储,供人们...
  • 同时默认开启了解析后复制到剪切板功能,就是解析完后把真实下载地址复制到系统剪切板里,你只需在迅雷等下载软件新建任务即可。 也可以在解析出真实地址后点击立即下载,会启动系统默认的浏览器打开这个下载链接。...
  • 此工具是从TT浏览器中拿下来的,比QQ截图还方便。...支持剪切板截图,保存成图片,添加图形文字等常用功能; 使用方法: 1.将软件解压到任意目录下,此工具为绿色版 2.运行“在快速启动栏创建快捷方式.bat”文件
  • 方便查找斗图表情,回车搜索后,左键点击看中的就复制到剪切板了,右键点击可在浏览器中打开图片(方便无法自动复制粘贴情况下的使用) 项目地址: 数据来源: 图源 01(默认,推荐): 图源 02(原默认): 图源 02...
  • 于是周六周末摸索着自己实现了一下它的两个基本功能,截屏到剪切板和保存到文件。参考了两个版本的代码 。一个是VC 驿站上的QQ2008版本的截屏。它采用了橡皮筋类。一种是之前CSDN上一个牛人放出的模拟ipad效果的源...
  • 这是单击打开默认浏览器按钮后打开的系统默认浏览器、我的默认浏览器是最新版的QQ浏览器,打开很快 这是打开的屏幕截图工具 正在截图 截图成功后,鼠标右键单击,有一个保存框(其实是QAction加在QLabel里)显示出来...
  • windows浏览器不需要转义,直接使用url https://lkx1993.coding.net/p/lkx/d/files/git/raw/master/tools/DittoSetup_3_21_50_0(剪切板).exe coding.net是一个仓库最大限制2g wget ...
  • 8、开放式远程教学,不需要配置专门的通讯服务器,借助于QQ等即时通讯工具进行1对1、1对多的跨平台(PC、ipad、Android)远程教学,满足了班班通模式的教学需要; 9、互动教学功能,通过手持终端设备(手机、平板等)的...
  • HTML5+FLASH+php+文件上传

    2015-02-25 15:10:06
    粘贴功能主要体现在当有图片数据在剪切板中时(截屏工具如QQ Ctrl + ALT + A 网页中右击图片点击复制) Ctrl + V便可添加此图片文件 HTML5 & FLASH 兼容主流浏览器 接口一致 实现了两套运行时支持 用户无需...
  • 粘贴功能主要体现在当有图片数据在剪切板中时(截屏工具如QQ(Ctrl + ALT + A), 网页中右击图片点击复制),Ctrl + V便可添加此图片文件。 HTML5 & FLASH 兼容主流浏览器,接口一致,实现了两套运行时支持,用户...
  • `商业版授权请联系:kalcaddle#qq.com` #### 1.是什么: - Kodexplorer为千帆网络工作室开发的一款服务器文件管理程序。 - 完美取代FTP管理:可用于服务器文件管理,zip解压缩 备份还原、支持图片、音乐、视频预览...
  • 12.2.2 将文件复制到剪切板 12.2.3 格式转换 12.2.4 图片幻灯片 12.2.5 图片旋转 12.3 设计过程 12.3.1 主窗体 12.3.2 打开图片目录 12.3.3 图片格式转换 12.3.4 设为桌面背景 12.3.5 图片特效 12.3.6 图片调节 12.3...
  • 12.2.2 将文件复制到剪切板 12.2.3 格式转换 12.2.4 图片幻灯片 12.2.5 图片旋转 12.3 设计过程 12.3.1 主窗体 12.3.2 打开图片目录 12.3.3 图片格式转换 12.3.4 设为桌面背景 12.3.5 图片特效 12.3.6 图片调节 12.3...
  • 12.2.2 将文件复制到剪切板 12.2.3 格式转换 12.2.4 图片幻灯片 12.2.5 图片旋转 12.3 设计过程 12.3.1 主窗体 12.3.2 打开图片目录 12.3.3 图片格式转换 12.3.4 设为桌面背景 12.3.5 图片特效 12.3.6 图片调节 12.3...
  • C#开发典型模块大全

    2014-03-12 18:11:22
    12.2.2 将文件复制到剪切板 287 12.2.3 格式转换 288 12.2.4 图片幻灯片 288 12.2.5 图片旋转 289 12.3 设计过程 290 12.3.1 主窗体 290 12.3.2 打开图片目录 291 12.3.3 图片格式转换 292 12.3.4 ...

空空如也

空空如也

1 2 3 4
收藏数 67
精华内容 26
关键字:

qq浏览器剪切板