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的使用实例:

从MRF8P9040N数据手册到ADS仿真:手把手教你搞定LDMOS功放设计(附完整模型下载)

本文详细解析了MRF8P9040N LDMOS功率放大器的数据手册关键参数,并提供了在ADS中进行仿真的完整指南。从模型导入、直流工作点验证到负载牵引与阻抗匹配设计,逐步指导工程师完成高效功放设计。文章还包含调试技巧和常见问题解决方案,帮助优化射频功放性能。

weixin_27015733的博客 489

[iOS]UIMenuController简单使用

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

Gamin 992

2024.6.10丨基于DIAMOND与VFDB数据库的致病菌毒力因子高效注释指南

本文详细介绍了基于DIAMOND与VFDB数据库的致病菌毒力因子高效注释方法,涵盖工具安装、参数优化、数据库选择及实战案例解析。通过DIAMOND的快速比对和VFDB的全面毒力因子数据,显著提升微生物基因组研究效率,适用于临床检测、食品安全监测等多个场景。

weixin_33712987的博客 376

iOS UIMenuController的使用

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

qwert658的博客 450

基于STM32和MPU6050的手势控制小车设计与实现

MPU6050传感器:用于检测手势变化,采集加速度和陀螺仪数据。STM32微控制器:处理MPU6050传感器的数据,根据手势变化控制小车的运动。电机驱动模块:接收来自STM32的控制信号,驱动小车的电机,实现小车的前进、后退、左转和右转。小车底盘:作为整个系统的机械部分,提供移动平台。MPU6050是一款集成了3轴加速度计和3轴陀螺仪的传感器,具有高精度、低功耗和小体积等特点。它通过I2C接口与微控制器通信,可以实时采集加速度和角速度数据,广泛应用于运动检测、姿态控制和手势识别等领域。

m0_57781768的博客 2309

VSCode 降低适用版本并且关闭自动更新

官方表示,提高了远程服务器构建工具链的最低要求,更新了对 glibc 的要求,需要最低2.28版本。最快的方法是把vs code的版本降到1.85(为什么是这个版本呢?打开VS Code的官方网站(https://code.visualstudio.com/)通过查看可以知道,具体的版本没有直接显示分类,他是根据发布日期来分类的同时和版本匹配。在网站的顶部导航栏中找到”Updates”按钮,点击进入下载页面。找了半天一直没发现,原来就在紧挨着的下面。远程主机不满足运行vs code服务器的先决条件。

Sunflower的博客 9581

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

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

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

基于Playwright和反爬虫规避技术的雪球股票讨论数据采集方案

随着量化投资和社交投资的兴起,雪球作为中国领先的投资社交平台,其用户讨论数据成为研究市场情绪的重要来源。本文将详细介绍如何使用最新的Playwright技术和反爬虫规避策略,构建一个高效、稳定的雪球股票讨论爬虫系统。本文详细介绍了基于Playwright的雪球股票讨论爬虫实现方案,涵盖了从基础配置到高级反爬虫策略的各个方面。AI驱动的反爬虫对抗更智能的请求调度算法区块链技术在数据溯源中的应用联邦学习在数据采集中的运用。

2201_76125261的博客 1005

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

springboot+vue项目基础开发(12)vue项目的搭建

在src目录下新建 api,utils,views文件夹。删除componets目录下自动生成的所有文件。在utils文件夹下创建request.js。启动项目,记得是要在管理员下启动。

m0_58498702的博客 152

Test软件:Keysight二次开发_(1).Keysight软件开发概述

VISA(Virtual Instrument Software Architecture)库是Keysight提供的一种标准化的仪器控制接口,支持多种编程语言和开发环境。仪器通信:通过GPIB、USB、以太网等接口与仪器进行通信。数据采集:从仪器中获取测量数据。命令发送:向仪器发送控制命令。错误处理:处理通信过程中可能出现的错误。测试自动化是指通过编写脚本或程序来自动执行测试任务,从而提高测试效率和减少人为错误。Keysight的测试设备和仪器支持多种编程语言和开发环境,使得测试自动化变得相对容易。

2401_87715305的博客 1357

iOS UIMenuController 用法

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

yizhiliulangdemiao的博客 1112

ROS2 CANopen 使用教程

第一步是定义一个结构,用于保存有关接头和相关 CANopen 数据的信息。该结构是 CANopen 网络的基础,可确保存储所有相关数据并在需要时进行访问。

机器人控制与仿真应用 3690

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

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

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

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

iOS - UIMenuController


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

rstbfveradsvc 231

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

iOS中UIMenuController的使用

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

专注移动开发 1105

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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、付费专栏及课程。

余额充值