iphone--UIMenuController使用

本文介绍了如何在UILabel中实现类似UITextView的长按复制功能,包括设置UI控件交互属性、显示UIMenuViewController及使用UIPasteboard进行复制操作。提供了一个简单的实现示例并附上Demo。

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

最近因为想在UILabel中实现类UITextView的长按复制的功能,找到了UIMenuController,可以实现,但最终还是达不到像UITextView那样任意选择的功能,最终用UITextView代替UILaebl显示,在这里记录下UIMenuController的简单实现,并附件上Demo,先上图


关于UILable长按事件有个注意的地方,就是要先设置UILabel的

[self.labelsetUserInteractionEnabled:YES];//默认不接收任何事件

想要显示UIMenuViewController ,如下即可

- (void)showMenuViewController:(UIView*)showInView
{
    UIMenuItem *flag = [[UIMenuItem alloc] initWithTitle:@"复制" action:@selector(flag:)];
    
    UIMenuItem *approve = [[UIMenuItem alloc] initWithTitle:@"Approve" action:@selector(approve:)];
    
    UIMenuItem *deny = [[UIMenuItem alloc] initWithTitle:@"Deny" action:@selector(deny:)];
    
    
    UIMenuController *menu = [UIMenuController sharedMenuController];
    
    [menu setMenuItems:[NSArray arrayWithObjects:flag, approve, deny, nil]];
    
    [menu setTargetRect:showInView.frame inView:showInView.superview];
    
    [menu setMenuVisible:YES animated:YES];
}
而关于复制,用到了系统的复制面板UIPasteboard,只需设置UIPasteboard.string = string,即可以其他地方出现粘贴出string
    UIPasteboard *gpBoard = [UIPasteboard generalPasteboard];//获取系统的UIPasteboard
    [gpBoard setString:@"复制文字"];
自己也可以自定义UIPasteboard,详细自己找一下~_~;

demo下载地址: http://download.youkuaiyun.com/download/cjsen/4874724

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值