zoukankan      html  css  js  c++  java
  • UIPasteboard粘贴板:UITableView复制粘贴功能(二)

    这篇咱写写一写在UITableView上实用剪贴板的两种方法;

    一:在自定义cell里面使用

     其实,在cell的使用跟在label里面的用法基本一样

    1.放方法:

    - (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];

        }

    }

    然后呢,当然就是 实现copy方法拉。。

    - (void)copy:(id)sender {

        NSLog(@"copy");

        UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];

       [pasteboard setString:[[self textLabel]text]];

      }

    不过还有最重要的一步,上此方法,它的意思是用来激发copy菜单哦。

    - (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated {

        [[self delegate] performSelector:@selector(showMenu:)

          withObject:self afterDelay:0.9f];

    [super setHighlighted:highlighted animated:animated];

     }

    至于生成菜单,大家应该已经经过上一篇的阅读,已经很熟悉了,看代码:

     

    //显示菜单

    - (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];

        }

    }

    OK,剩下的至于如何实用自定义的cell,大家应该已经很熟练了吧,我就不在一一介绍了,自此,第一种使用剪贴板的方法介绍完毕

    二:第二种就更简单了,因为(__MAC_NA,__IPHONE_5_0)以后已经放出了3个方法,非常好用,我直接就上方法拉。

     

    -(BOOL)tableView:(UITableView *)tableView shouldShowMenuForRowAtIndexPath:(NSIndexPath *)indexPath{

        

        return YES;

    }


    -(BOOL)tableView:(UITableView *)tableView canPerformAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender{

        if (action == @selector(copy:)) {

            return YES;

        }

        

        return NO;

    }


    -(void)tableView:(UITableView *)tableView performAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender{

        

        UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

        if (action == @selector(copy:)) {

            [UIPasteboard generalPasteboard].string = cell.textLabel.text;

        }

        

    }

  • 相关阅读:
    第十三周总结
    第十二周总结
    团队冲刺第十五天-KeepRunningAPP
    团队第一阶段冲刺评价
    团队项目KeepRunning第一阶段成果展示
    团队冲刺第十四天-KeepRunningAPP
    第十一周总结
    团队冲刺第十三天-KeepRunningAPP
    CVPR2018关键字生成词云图
    Delphi APP 開發入門(八)SQLite資料庫
  • 原文地址:https://www.cnblogs.com/niexiaobo/p/4465086.html
Copyright © 2011-2022 走看看