UIMenuController的使用,对UILabel拷贝以及定制菜单

【sap2000】部分模型通过.s2k文件合并模型generating a global model through partial models by .s2k text file 现在需要通过选项File → Import → SAP2000 .s2k Text File → Add to existing model(如果使用其中一个部分模型作为基础)或New model(如果使用新文件)添加部分模型,并使用以下导入选项。模型A(阶段1/5) Model A (Phase 1/5)模型B(阶段2/5) Model B (Phase 2/5)模型C(阶段3/5) Model C (Phase 3/5)模型E(阶段5/5) Model E (Phase 5/5) 阅读详情

1. Menu所处的View必须实现 – (BOOL)canBecomeFirstResponder, 且返回YES

2. Menu所处的View必须实现 – (BOOL)canPerformAction:withSender, 并根据需求返回YES或NO

3. 使Menu所处的View成为First Responder (becomeFirstResponder)

4. 定位Menu (- setTargetRect:inView:)

5. 展示Menu (- setMenuVisible:animated:)


@implementation UICopyLabel

// default is NO
- (BOOL)canBecomeFirstResponder{
    return YES;
}

//"反馈"关心的功能  
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender{  
    return (action == @selector(copy:));  
}  
//针对于copy的实现  
-(void)copy:(id)sender{  
    UIPasteboard *pboard = [UIPasteboard generalPasteboard];  
    pboard.string = self.text;  
} 

//UILabel默认是不接收事件的,我们需要自己添加touch事件  
-(void)attachTapHandler{  
    self.userInteractionEnabled = YES;  //用户交互的总开关  
    UITapGestureRecognizer *touch = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];  
    touch.numberOfTapsRequired = 2;  
    [self addGestureRecognizer:touch];  
    [touch release];  
}  
//绑定事件  
- (id)initWithFrame:(CGRect)frame  
{  
    self = [super initWithFrame:frame];  
    if (self) {  
        [self attachTapHandler];  
    }  
    return self;  
}  
//同上  
-(void)awakeFromNib{  
    [super awakeFromNib];  
    [self attachTapHandler];  
}

-(void)handleTap:(UIGestureRecognizer*) recognizer{  
    [self becomeFirstResponder];  
    UIMenuController *menu = [UIMenuController sharedMenuController];  
    [menu setTargetRect:self.frame inView:self.superview];  
    [menu setMenuVisible:YES animated:YES];  
} 


@end


在view里添加一个UICopyLabel

现在可以使用UICopyLabel实现双击来对label的内容copy了

在你的view中

UICopyLabel *display = [[UICopyLabelalloc]initWithFrame:CGRectMake(30,100,250,30)];


awakeFromNib

在使用IB的时候才会涉及到此方法的使用,当.nib文件被加载的时候,会发送一个awakeFromNib的消息到.nib文件中的每个对象,每个对象都可以定义自己的awakeFromNib函数来响应这个消息,执行一些必要的操作。

看例子:

创建一个viewController with XIB

定义一个UIView的子类

打开xib,并把View的类型指定为上一步骤定义的子类

然后在TestView.m中加入 awakeFromNib方法,运行程序发现此方法被调用了!!!



下面我们来定制菜单

在attachTapHandler中添加长按压手势

-(void)attachTapHandler{  
    self.userInteractionEnabled = YES;  //用户交互的总开关  
    //双击
    UITapGestureRecognizer *touch = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];  
    touch.numberOfTapsRequired = 2;  
    [self addGestureRecognizer:touch]; 
     [touch release]; 
    
    //长按压
    UILongPressGestureRecognizer *press = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPress:)];
    press.minimumPressDuration = 1.0;
    [self addGestureRecognizer:press];
    [press release];
    
} 

添加方法longPress

- (void)longPress:(UILongPressGestureRecognizer *)recognizer {
if (recognizer.state == UIGestureRecognizerStateBegan) {
//	 TSTableViewCell *cell = (TSTableViewCell *)recognizer.view;
        [self becomeFirstResponder];
        UIMenuItem *flag = [[UIMenuItem alloc] initWithTitle:@"Flag" 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:self.frame inView:self.superview];
        [menu setMenuVisible:YES animated:YES];
         NSLog(@"menuItems:%@",menu.menuItems);
}
}

- (void)flag:(id)sender {
NSLog(@"Cell was flagged");
}

- (void)approve:(id)sender {
NSLog(@"Cell was approved");
}

- (void)deny:(id)sender {
NSLog(@"Cell was denied");
}

修改canPerformAction

-(BOOL)canPerformAction:(SEL)action withSender:(id)sender{  
//    return (action == @selector(copy:));  
    if (action == @selector(copy:)||action == @selector(flag:)||action == @selector(approve:)||action == @selector(deny:)) {
        return YES;
    }
}


ok。。。效果如图


ComfyUI面部修复FaceDetailer保姆级教程:从模型选择到参数调优全解析 本文提供ComfyUI面部修复FaceDetailer的保姆级教程,深度解析从模型选择到参数调优的全过程。针对常见的五官模糊、肤色不均等问题,详细对比了BBox与Segm检测器的优劣,并给出SD1.5与SDXL模型的核心参数联动策略与实战方案,帮助用户精准掌控AI绘画中的面部修复效果。 阅读详情

相关推荐

卫星动力学仿真模型开发之AI初试

以下是通过AI生成的一个简单的C语言仿真模型,用于模拟卫星的姿态、轨道动力学和运动学。该模型基于基本的物理公式,假设卫星在近地轨道上运行,并忽略了一些复杂的扰动因素(如大气阻力、太阳辐射压等)。姿态动力学描述了卫星绕其质心的旋转运动。轨道动力学描述了卫星在引力作用下的运动。姿态运动学描述了卫星姿态随时间的变化。

xspace的博客 569

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

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

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

ECMWF等大气数据批量下载(Python API)详细步骤

ECMWF等大气数据批量下载(Python API) 遥感方向做热红外温度反演,不可避免的要用到大气廓线数据,大气数据具有实时性,比如2018年9月1日的早上8点的影像,为了提高反演精度就需要用到时间上与其相差尽可能接近的大气数据,用于消除大气的影响,如果数据量较少我们可以查看影像的时间和空间范围进行下载,但是如果处理某个较大区域时可能涉及到大量的影像,如果一景一景对应查找去下载会很麻烦,因此针对大量数据的自动批量下载很有必要。本文根据 https://cds.climate.copernicus.eu/#

liuxiaojiangtobeno1的博客 1万+

对UILabel添加UIMenuController扩展

一、UIMenuController认识 1、默认情况下,UITextView / UITextFiled / UIWebView 都有苹果自带的有UIMenuController功能二、对UILabel添加UIMenuController扩展1、新建一个SSCopyLabel,继承UIlabel,.m文件如下:#import "SSCopyLabel.h"@implementation

岑志军的个人博客 689

16、Arduino MEGA 2560 固件与电路详解

本文详细介绍了Arduino MEGA 2560的固件编程与电路设计,涵盖ATmega16U2和ATmega2560的熔丝配置、stk500v2引导加载程序的备份与恢复方法、使用Microchip Studio通过ICSP烧录固件的步骤,以及debugWIRE和JTAG调试接口的选择与配置。同时提供了电路块图解析、组件位置参考及常见问题解决方案,帮助用户深入理解硬件结构并进行高效开发与调试。

swift5iosmith的博客 194

【入坑存内计算一键指南】存内计算运算原理:算法优化、存储介质探究

本文探讨了存内计算及其面向的架构优化,尤其侧重于图算法优化和存内计算存储介质。文章介绍了存内计算的概念和意义,着重强调了存内计算解决了内存墙问题,提高了计算效率。针对图算法的优化,提出了基于位运算的创新方法,重塑了单源最短路径算法,并介绍了基于局部重叠度的链路预测算法优化设计。接着,文章详细讨论了存内计算存储介质,特别是非易失性存储器,比较了不同类型存储器的性能,并重点介绍了基于ReRAM的存内计算技术,包括其物理模型和交叉阵列结构。

一键难忘的博客 7066

UIMenuController—为UILabel添加UIMenuController

最近做项目,项目中有一处要使用pickerView进行日期的选择,即点击textField,下方弹出的不是键盘,而是pickerView。按要求,此textField不可编辑,由于弹出pickerView取代键盘的逻辑已经写好,我只需做两件事: (1)去掉此textField右侧的叉号(用于点击删除整行)textField.clearButtonMod...

weixin_33928137的博客 188

部署OpenClaw(ClawdBot、MoltBot)后访问localhost:18789报1008错误怎么办?

部署openclaw(曾用名ClawdBot、MoltBot)后访问localhost:18789出现1008授权错误❌?本文分享如何快速解决这个问题✅

XiaoqiangClub的博客 1万+

UITextView长按弹出UIMenuController,剪切拷贝选择全选粘贴删除

- (BOOL) canBecomeFirstResponder {     return YES; } - (BOOL) canPerformAction:(SEL)action withSender:(id)sender {     if ( [UIMenuController sharedMenuController] ) {        [U

weixin_35755389的博客 1万+

Vue3 - 完美解决html2canvas截图不全问题,截图只截取当前可视区域导出图片不全,截屏导出的图片显示不全只有一部分或缺一块,vue3移动端H5网页项目使用html2canvas插件长截图!

vue3,html2canvas,移动端H5网页,截图不全,html2canvas长截图不全,保存长截图,页面滚动导致截图不全,网页下方截屏不到怎么办,底部一部分无法截屏到,保存的图片少了一大块,H5海报截图不完整,怎么截取滚动条下方的内容,截图图时图片不全,截图图片只有一半的问题,底部内容空白,截图空白问题的解决,截图不全怎么办,html2canvas.js网页截图功能(解决截图不全问题,移动端ios系统截图不完整,html2canvas截图太长又不能删减截取不到,使用HTML2Canvas在H5页面上实

🏆 前端领域优质创作者 1万+

基于 Qt C++ 开发一套西门子量子测量系统的控制与数据采集平台

sensorIdCombo->addItems({"QTS-100-001 (温度)", "QPG-200-001 (压力)", "QDS-300-001 (位移)"});precisionTable->setHorizontalHeaderLabels({"传感器ID", "类型", "标称精度", "实际精度", "校准状态"});QWidget *dispWidget = createSensorWidget("量子位移", "mm (±1μm)", 50.0, 0.001);// 传感器状态更新。

寒寒豆豆软件公司的博客 253

(转)UIMenuController的使用,对UILabel拷贝以及定制菜单

UIMenuController的使用,对UILabel拷贝以及定制菜单 1. Menu所处的View必须实现 – (BOOL)canBecomeFirstResponder, 且返回YES 2. Menu所处的View必须实现 – (BOOL)canPerformAction:withSender, 并根据需求返回YES或NO 3. 使Menu所处的View成为First Respo...

weixin_30369087的博客 74

学习STM32的DS18B20温度传感器

该函数首先复位传感器,然后发送跳过ROM命令和转换命令,并等待转换完成。接下来,它再次复位传感器,发送跳过ROM命令和读取温度命令。最后,它读取温度值的最低字节和最高字节,并将其组合成16位温度值。传感器的VCC引脚连接到STM32的3.3V电源,GND引脚连接到GND,而数据引脚连接到任何一个IO引脚。需要注意的是,示例代码中使用了一个简单的延时函数来等待转换完成。实际上,您可能需要使用定时器或其他更精确的延时方法来实现更准确的延时。下面是一个示例代码,演示如何读取DS18B20传感器的温度值。

m0_75244442的博客 1182

UIMenuController的使用,对UILabel拷贝以及定制菜单 .

1. Menu所处的View必须实现 – (BOOL)canBecomeFirstResponder, 且返回YES 2. Menu所处的View必须实现 – (BOOL)canPerformAction:withSender, 并根据需求返回YES或NO 3. 使Menu所处的View成为First Responder (becomeFirstResponder) 4. 定位Menu ...

weixin_30558305的博客 67

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: UIMenuController的使用,对UILabel拷贝
下一篇: iOS开发_iphone 实现剪贴板操作_iphone 复制粘贴功能
我是一只懒虫
博客等级 码龄17年 147粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值