iOS之UIMenuController的简单使用

ios-长按手势自定义复制功能.zip tableview的系统长按调起复制功能、自定义复制功能;view的长按复制功能 立即下载

UIMenuController的示例

示例

UIMenuController须知

  • 默认情况下, 有以下控件已经支持UIMenuController
    • UITextField
    • UITextView
    • UIWebView

让其他控件也支持UIMenuController(比如UILabel)

  1. 自定义UILabel
- (void)setUp { 
  // 1.设置label可以交互 
  self.userInteractionEnabled = YES;  
  // 2.添加点击手势 
  [self addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(lableClick)]];
}
- (void)lableClick { 
  // 3.设置label为第一响应者,只有成为响应者才能够将MenuController显示在其上面 
  [self becomeFirstResponder]; 
  // 4.初始化UIMenuController 
  UIMenuController *menuController = [UIMenuController sharedMenuController];  
  // 5.设置UIMenuController显示的位置 
  // targetRect : 将要显示所在label的frame; 
  // view : targetRect所在的坐标系参照物(父view或self)
  [menuController setTargetRect:self.frame inView:self.superview];
  // [menuController setTargetRect:self.bounds inView:self];作用同上  
  // 6.显示UIMenuController 
  [menuController setMenuVisible:YES animated:YES];
}
  1. 在UILable内重写2个方法
/**
 * 让label有资格成为第一响应者
 */
- (BOOL)canBecomeFirstResponder
{
    return YES;
}
/**
 * label能执行哪些操作(比如copy, paste等等)
 * @return  YES:支持这种操作
 */
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    if (action == @selector(cut:) || action == @selector(copy:) || action == @selector(paste:)) return YES;

    return NO;
}

3.实现各种操作方法

- (void)cut:(UIMenuController *)menu
{
    // 将自己的文字复制到粘贴板
    UIPasteboard *board = [UIPasteboard generalPasteboard];

    // 清空文字
    self.text = nil;
}

- (void)copy:(UIMenuController *)menu
{
    // 将自己的文字复制到粘贴板
    UIPasteboard *board = [UIPasteboard generalPasteboard];
    board.string = self.text;
}

- (void)paste:(UIMenuController *)menu
{
    // 将粘贴板的文字 复制 到自己身上
    UIPasteboard *board = [UIPasteboard generalPasteboard];
    self.text = board.string;
}

自定义UIMenuController内部的Item(在cell中)

  • 由于手动添加的MenuItem默认触发控制器中的方法,所以将MenuController的显示/隐藏,添加MenuItem写到控制器

    1. 添加item
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
  // 点击cell弹出UIMenuController 
  // 1.如果menuController已经在显示,就隐藏他
  // 注意,如果有一个cell正在显示menuController,这时再点击另外一个cell,上一个cell的menuController会消失,当前点击cell会显示,这是因为上一个cell不再是第一响应者了,menuController会自动释放 
  UIMenuController *menuController = [UIMenuController sharedMenuController]; 
  if (menuController.isMenuVisible) { 
    [menuController setMenuVisible:NO animated:YES];  
  }else { 
    // 2.显示MenuController 
    // 先设置cell为第一响应者,同时不要忘记在cell中重写canBecomeFirstResponder和canPerformAction:withSender: 
    JCMTopicCommentCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    [cell becomeFirstResponder]; 
    // 添加menuItem 
    UIMenuItem *item01 = [[UIMenuItem alloc]initWithTitle:@"赞" action:@selector(zanClick:)]; 
    UIMenuItem *item02 = [[UIMenuItem alloc]initWithTitle:@"回复" action:@selector(responseClick:)]; 
    UIMenuItem *item03 = [[UIMenuItem alloc]initWithTitle:@"举报" action:@selector(reportClick:)]; 
    menuController.menuItems = @[item01,item02,item03]; 
    // 设置menuControoler显示位置 
     CGRect showRect = CGRectMake(cell.x, cell.y + cell.height/2, cell.width, cell.height); 
     [menuController setTargetRect:showRect inView:cell.superview]; 
    // 显示menuController [menuController setMenuVisible:YES animated:YES];  
  }
}
  1. cell中实现两个方法
/**
 * 让label有资格成为第一响应者
 */
- (BOOL)canBecomeFirstResponder
{
    return YES;
}
/**
 * label能执行哪些操作(比如copy, paste等等)
 * @return  YES:支持这种操作
 */
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    if (action == @selector(cut:) || action == @selector(copy:) || action == @selector(paste:)) return YES;
    return NO;
}
  1. 处理方法的实现

“`objc

pragma mark - MenuControllerClick

// MenuController手动添加的item的方法实现必须放在controller中
- (void)zanClick:(UIMenuController *)menu {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSLog(@”%s %@”, func, [self commentInIndexPath:indexPath].content);
}
- (void)responseClick:(UIMenuController *)menu {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSLog(@”%s %@”, func, [self commentInIndexPath:indexPath].content);
}
- (void)reportClick:(UIMenuController *)menu {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSLog(@”%s %@”, func, [self commentInIndexPath:indexPath].content);
}“`

ios-简单的UIMenuController 的使用.zip 简单的UIMenuController UIPasteboard 的使用 适合初学者, 将Cell 的内容复制 粘贴在指定位置 立即下载

相关推荐

IOS实现弹出菜单效果MenuViewController

IOS 自定义实现弹出菜单效果MenuViewController 背景 景深 弹出菜单

iOS苹果自带UIMenuController

一、UIMenuController认识 1.默认情况下,UITextView / UITextFiled / UIWebView 都有苹果自带的有UIMenuController功能 2.UITextFiled 的弹出菜单效果系统自带的 3.当然,系统只给某些控件提供的该功能,但是我们自己给可以给指定控件添加...

weixin_30294295的博客 309

UIMenuItem带图片

网上下载的,前面发了个用这个第三方代码写的程序,现在把他的第三方代码发出来

iOS UIMenuController简介及使用 —— HERO博客

UIMenuController简介:UIMenuController为菜单控制器,是一个单例对象,继承NSObject,用来剪切、拷贝、粘贴等操作。UIMenuController使用:获取UIMenuController对象:UIMenuController *menu = [UIMenuController sharedMenuController]; 设置显示或者隐藏://通过menuVi...

hero_wqb的博客 1919

iOS中长按调出菜单组件UIMenuController的使用实例

UIMenuController即是用来制作我们平时对文本长按屏幕后显示出的复制粘贴等选项菜单,下面就来详细整理一下iOS中长按调出菜单组件UIMenuController的使用实例:

CTF——流量分析题型整理总结

我见过的流量分析类型的题目总结: 一,ping 报文信息 (icmp协议) 二,上传/下载文件(蓝牙obex,http,难:文件的分段上传/下载) 三,sql注入攻击 四,访问特定的加密解密网站(md5,base64) 五,后台扫描+弱密码爆破+菜刀 六,usb流量分析 七,WiFi无线密码破解 八,根据一组流量包了解黑客的具体行为 例题: 一,ping 报文信息 (icm...

小锤队长的博客 5万+

[iOS]UIMenuController简单使用

简单使用UIMenuController给UILabel添加复制、粘贴、分享功能。 Demo:https://download.youkuaiyun.com/download/u012881779/10628704 #import "GACopyLabel.h" @implementation GACopyLabel - (void)awakeFromNib { [super awakeFro...

Gamin 992

C#.NET斗地主服务端核心架构与高性能实现

斗地主作为典型的实时对战棋牌逻辑,本质是状态驱动的分布式协同问题。其技术内核涵盖有限状态机建模、低延迟网络同步、无GC内存操作与轻量级AI决策等关键能力。在.NET平台下,借助Span<T>、ImmutableArray、命令/事件总线与内存池等特性,可构建出高吞吐(200+ QPS)、低延迟(<150ms)、强一致的可落地服务端。本文聚焦C#.NET生态中斗地主核心模块的设计取舍与压测验证,深入解析状态机驱动、CardSet结构体优化、Kestrel中间件锁、规则+概率混合AI等实战方案,为实时对战类业务

weixin_29726381的博客 345

iOS UIMenuController的使用

当你在开发app过程中,突然想往一个控件或者UITableView里面添加一个长按手势,弹出一个黑色的选择菜单时,这时候就需要使用UIMenuController了

qwert658的博客 450

matlab物元可拓模型程序,熵权可拓物元模型

1 概述物元分析方法是中国学者蔡文于20世纪80年代提出的用于解决矛盾问题的技术方法,是研究物元及其变化规律,解决现实世界中不相容问题的有效方法,可应用于生态环境,水资源承载力,农用地分级和土地生态水平等综合评价研究中.本文主要介绍了熵权可拓物元模型的相关概念与该模型的建立过程.2 概念2.1 物元物元分析法的主要思想是把事物用"事物,特征,量值"(分别用N,C,V表示)3个要素以有序三元组的形式...

weixin_33823399的博客 4102

Open3D——RANSAC拟合球面【2026最新版】

RANSAC三维点云球面拟合,博客长期更新,本文最新更新时间为:2026年3月5日。

点云侠的博客 4084

iOS-你真的会用UIMenuController吗?(详细)

请认真阅读,因为里面有很多细节! UIMenuController的介绍 什么是UIMenuController? UIMenuController是UIKit里面的控件UIMenuController的作用在开发中弹出的菜单栏后面介绍了菜单栏显示中文的设置 菜单栏 有哪些控件是自带UIMenuController菜单栏效果的呢? UITextFieldUI

努力,可能成功!放弃,注定失败! 2694

APM32取代STM32的经验分享

我仔细检查了代码中与硬件相关的部分,例如外设寄存器的访问和中断处理程序的设置,并进行了相应的修改。在本文中,我将分享我将APM32引入项目中取代STM32的经验,并提供相应的源代码。我查看了APM32的官方网站、开发者论坛和相关社交媒体,了解了开发者社区的活跃度和可用的资源。总结起来,将APM32替换STM32的过程需要经过几个关键步骤:了解APM32的规格和功能、评估软件生态系统、迁移代码和调试,以及性能和功耗优化。在开始替换之前,我对APM32进行了详细的研究和评估,以确保它能够满足项目的需求。

UplKubernetes的博客 2004

ios控制ios_iOS UIMenuController UIMenuItem

ios控制iosIn this tutorial, we’ll implement the UIMenuController element in our iOS Application. 在本教程中,我们将在iOS应用程序中实现UIMenuController元素。 UIMenuController (UIMenuController) UIMenuController class is u...

从零开始的教程世界 622

YOLO12涨点改进| 损失函数改进篇 |AAAI 2025| 一种小目标检测SDLoss损失函数,解决现有损失函数对不同目标尺度敏感度不足的局限,提高了网络检测不同尺度目标的敏感能力,助力高效涨点

本文提出了一种改进的小目标检测方法SDLoss,通过动态调整尺度损失与位置损失的权重,优化了YOLOv12模型的性能。针对红外小目标检测中存在的两个主要问题:1)标准卷积难以捕捉目标的高斯空间分布特性;2)现有损失函数对不同尺度目标的敏感度不足,研究团队开发了Pinwheel-shaped卷积(PConv)和Scale-based Dynamic损失函数(SDLoss)。PConv通过不对称卷积核设计显著提升感受野,SDLoss则根据目标大小动态平衡尺度与位置损失的影响。

Ai缝合怪、助力小伙伴高效发论文 237

7.1华为OD机试真题 新系统 - 奇偶三数之和 (Java/Py/C/C++/Js/Go)

7.1华为OD机试真题 新系统 - 奇偶三数之和 (Java/Py/C/C++/Js/Go)

算法大师! 444

iOS UIMenuController 用法

先看效果如下图: UIMenuController 的用法和UIAlertViewController 的用法类似,它可以添加的UILabel 、UIImageView、UIButton等上面。 用法很简单代码如下: 此处是添加到button上的,位置放在了button的中间,如果要加在label上,可以给lable添加一个手势。 self.tmpBtn = [UIButton b...

yizhiliulangdemiao的博客 1112

RK3568平台开发系列讲解(音频篇)配置声卡

📢本篇文章介绍如何配置声卡。

内核笔记 2448

iOS UILabel的复制粘贴和UIMenuController的基本使用

1.复制-粘贴的功能 2.UIMenuController的使用 3.具体代码 4.效果 5.代码demo示例 1.复制-粘贴的功能 在iOS中下面三个控件,自身就有复制-粘贴的功能: UITextView UITextField UIWebView UIKit framework提供了几个类和协议方便我们在自己的应用程序中实现剪贴板的功能。 UIPasteb...

高级软件开发工程师--周玉的博客 2072

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

iOS - UIMenuController

&#13; 前言 NS_CLASS_AVAILABLE_IOS(3_0) __TVOS_PROHIBITED @interface UIMenuController : NSObject 1、UIMenuController 简介 1、默认情况下,UITextFiled、UITextView、UIWebView 都有苹果自带的有 UIMenuController 功...

rstbfveradsvc 231

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

iOS中UIMenuController的使用

不知你有没有发现,在你的微信朋友中,长按一段文字(正文或者评论),会弹出这样子的玩意: 这玩意很眼熟是吧?没错,你经常见到它,在很多iOS系统应用中,你想复制一段文字到另一处粘贴,你只要长按一下,这玩意就出来了。既然iOS自家的app中都有这个,那么它一定有封装的控件吧,以前我不知道他到底叫什么,后来公司的项目中要用到这玩意了,当时打算自己实现,还叫设计MM切了图,囧,但是在百度上

专注移动开发 1105

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

iOS--UI UIMenuController的使用

1、有以下控件已经支持UIMenuController 1. UITextFiled 2. UIWebView 3. UITextView 2、让其他控件支持UIMenuController a) 自定义控件 b) 必须实现两个方法,方法如下: // 使控件成为第一响应者 - (BOOL)canBecomeFirstResponder{     return YES; } /

A_Studystudy的博客 738

iOS中UIMenuController基本使用

我这里用了一个按钮,点击按钮的时候给弹出UIMenuController控件 下面的代码是按钮触发事件: -(void)showPopupView:(UIButton *)button {     button.selected = !button.selected;     //必须要有,如果要UIMenuController显示    

iosWorker的博客 5857

[iOS]UIMenuController 简单使用

UIMenuController *menu = [UIMenuController sharedMenuController];          // UIMenuItem 对象 必须实现 action: 中的方法,否则将不会被显示出来     UIMenuItem *item1 = [[[UIMenuItem alloc] initWithTitle:@"item1" acti

神奇的芋頭(http://blog.youkuaiyun.com/liuyu1114) 1131

iOS UIMenuController菜单

//1:普通 //// ViewController.m// DemoTest#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad];}- (void)didReceiveM...

dgzr3370的博客 195

iOS中UIMenuController使用

textView = [[UITextView alloc] initWithFrame:self.view.bounds]; textView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight; textView.editable = NO;

培根芝士的专栏 429
上一篇: iOS之UITableView设置全屏分隔线
下一篇: iOS 之NSDate的Category
ShmimyCoder
博客等级 码龄10年 0粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值