UIMenuItem 模仿扣扣,微信聊天记录中长按转发,复制,粘贴等功能

本文介绍了如何在iOS应用中通过UIMenuItem实现类似QQ和微信聊天记录中的长按操作,包括复制、剪切、转发、收藏和删除功能。通过添加长按手势识别器,响应长按事件,并设置菜单项,最终实现在视图上长按时弹出相应的操作选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单的介绍一个小控件基本用法,具体功能就不写了,根据个人喜好添加功能

(1).在-viewDidLoad()中添加长按手势

UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPressGestureAction:)];
    longPressGesture.minimumPressDuration = 2;
    [self.view addGestureRecognizer:longPressGesture];

(2).长按手势相应事件

//长按手势
-(void)longPressGestureAction:(UILongPressGestureRecognizer *)longPressGesture
{
    
    if (longPressGesture.state == UIGestureRecognizerStateBegan) {
        [self.view becomeFirstResponder];
        UIMenuItem *item1 = [[UIMenuItem alloc]initWithTitle:@"复制" action:@selector(copyAction)];
        UIMenuItem *item2 = [[UIMenuItem alloc]initWithTitle:@"剪切" action:@selector(cutAction)];
        UIMenuItem *item3 = [[UIMenuItem alloc]initWithTitle:@"转发" action:@selector(transmitAction)];
        UIMenuItem *item4 = [[UIMenuItem alloc]initWithTitle:@"收藏" action:@selector(collectAction)];
        UIMenuItem *item5 = [[UIMenuItem alloc]initWithTitle:@"删除" action:@selector(deleteAction)];
        UIMenuController *menu =[UIMenuController sharedMenuController];
        [menu setMenuItems:[NSArray arrayWithObjects:item1,item2,item3,item4,item5,nil]];
        [menu setTargetRect:self.view.bounds inView:self.view];
        [menu setMenuVisible:YES animated:YES];
        [menu setArrowDirection:UIMenuControllerArrowDown];
        ;
        
    }
}

(3). 必须响应事件的两个条件

//必须带的条件一
-(BOOL)canBecomeFirstResponder{
    return YES;
}
//条件二
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender{
    if (action == @selector(copyAction)||action == @selector(cutAction)||action == @selector(transmitAction)||action == @selector(collectAction)||action == @selector(deleteAction)) {
        return YES;
    }else{
        return NO;   //默认系统菜单项
    }
}

(4).添加菜单栏中各个功能

-(void)copyAction{
    NSLog(@"复制");
}
-(void)cutAction{
    NSLog(@"剪切");
}
-(void)transmitAction{
    NSLog(@"转发");
}
-(void)collectAction{
    NSLog(@"收藏");
}
-(void)deleteAction{
    NSLog(@"删除");
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值