类似于 QQ长按弹出菜单视图 (主要是文字的复制、粘贴)

来源:互联网 发布:美利坚大学知乎 编辑:程序博客网 时间:2024/05/17 23:09

//长按触发的事件- (void)longAction:(UILongPressGestureRecognizer *)sender{    if (sender.state == UIGestureRecognizerStateBegan) {        NSLog(@"长按手势已经触发");        //一定要调用这个方法        [self becomeFirstResponder];        //创建菜单控制器        UIMenuController * menuvc = [UIMenuController sharedMenuController];        UIMenuItem * menuItem1 = [[UIMenuItem alloc]initWithTitle:@"复制" action:@selector(firstItemAction:)];        UIMenuItem * menuItem2 = [[UIMenuItem alloc]initWithTitle:@"粘贴" action:@selector(secondItemAction:)];        UIMenuItem * menuItem3 = [[UIMenuItem alloc]initWithTitle:@"删除" action:@selector(threeItemAction:)];        menuvc.menuItems = @[menuItem1, menuItem2, menuItem3];        [menuvc setTargetRect:CGRectMake(self.bounds.size.width/2, self.bounds.origin.y-5, 0, 0) inView:self];        [menuvc setMenuVisible:YES animated:YES];    }}#pragma mark--设置每一个item的点击事件- (void)firstItemAction:(UIMenuItem *)item{    NSLog(@"%s--->%@", __func__, item);    //通过系统的粘贴板,记录下需要传递的数据    [UIPasteboard generalPasteboard].string = @"我们好像在见过";}- (void)secondItemAction:(UIMenuItem *)item{    NSLog(@"%s--->%@", __func__, item);    //从系统的粘贴板获取复制的数据    NSString * str = [UIPasteboard generalPasteboard].string;    if (str) {        self.text = str;    }}- (void)threeItemAction:(UIMenuItem *)item{    NSLog(@"%s--->%@", __func__, item);    self.text = nil;}#pragma mark--必须实现的关键方法//自己能否成为第一响应者- (BOOL)canBecomeFirstResponder{    return YES;}//能否处理Action事件- (BOOL)canPerformAction:(SEL)action withSender:(id)sender{    if (action == @selector(firstItemAction:) || action == @selector(secondItemAction:) ) {        return YES;    }    return [super canPerformAction:action withSender:sender];}

1 0
原创粉丝点击