iOS--UI UIMenuController的使用

ContextMenu.iOS(iOS源码) 来源:github/Context-Menu.iOSLicence:MIT作者:Yalantis     ContextMenu.iOS是一款效果很好的动画菜单,支持高度的自定义,适用于多种类型例如社交类应用的评论和赞等。支持屏幕旋转。 立即下载
1、有以下控件已经支持UIMenuController
1. UITextFiled
2. UIWebView
3. UITextView
2、让其他控件支持UIMenuController
a) 自定义控件
b) 必须实现两个方法,方法如下:
// 使控件成为第一响应者
- (BOOL)canBecomeFirstResponder{
    return YES;
}
// 控件能执行的方法比如(复制,粘贴...)
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender{
return YES;
}
c) 实现各种操作方法,方法如下:
// 复制
-(void)copy:(UIMenuController *)menu{
    // 将粘贴板上的内容复制给自己
    UIPasteboard *paste = [UIPasteboard generalPasteboard];
    self.text = paste.string;
}
// 剪切
-(void)cut:(UIMenuController *)menu{
    [self copy:menu];
    // 清空文字
    self.text = nil;
}
d) 让控件成为第一响应者
    // self指的是控件
    [self becomeFirstResponder];
e) 显示UIMenuController
// 显示menuController
    UIMenuController *menu = [UIMenuController sharedMenuController];
    //[menu setTargetRect:self.frame inView:self.superView];可以用下面代替
    //TargetRect:MenuController需要指向的矩形距离
    //TargetView:targetRect会以它的左上角为坐标原点
    [menu setTargetRect:self.bounds inView:self];
    [menu setMenuVisible:YES animated:YES];

 这里以UILabel为例,具体代码如下:

#import "CustomLabel.h"

@implementation CustomLabel

- (void)awakeFromNib{
    [self createAttributes];
}

- (instancetype)initWithFrame:(CGRect)frame{
    if (self = [super initWithFrame:frame]) {
        [self createAttributes];
    }
    return self;
}

-(void)createAttributes{
    // 打开用户交互
    self.userInteractionEnabled = YES;
    // 添加手势
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelAction)];
    [self addGestureRecognizer:tap];
}

// 使label能成为第一响应者
- (BOOL)canBecomeFirstResponder{
    return YES;
}
// label能执行的方法比如(复制,粘贴...)
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender{
    
    if (action == @selector(copy:) || action == @selector(cut:) || action == @selector(paste:)) {
        return YES;
    }
    
    return NO;
}

-(void)copy:(UIMenuController *)menu{
    // 将粘贴板上的内容复制给自己
    UIPasteboard *paste = [UIPasteboard generalPasteboard];
    self.text = paste.string;
}

-(void)cut:(UIMenuController *)menu{
    [self copy:menu];
    // 清空文字
    self.text = nil;
}

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

//设置menuController的作用矩形框
-(void)labelAction{
    
    // label成为第一响应者
    [self becomeFirstResponder];
    // 显示menuController
    UIMenuController *menu = [UIMenuController sharedMenuController];
    //[menu setTargetRect:self.frame inView:self.superView];可以用下面代替
    //TargetRect:MenuController需要指向的矩形距离
    //TargetView:targetRect会以它的左上角为坐标原点
    [menu setTargetRect:self.bounds inView:self];
    [menu setMenuVisible:YES animated:YES];
        
}

@end

运行结果:


 

【愚公系列】《AIGC辅助软件开发》041-如何使用 AI技术提升工作效率:AI辅助软件架构师实践 在数字化转型的浪潮中,软件架构师作为技术团队的核心,承载着系统设计与架构优化的重要责任。然而,随着项目复杂度的增加和技术环境的变化,架构师面临着前所未有的挑战。幸运的是,人工智能(AI)技术的迅猛发展为这一行业带来了新的机遇,帮助架构师提升工作效率、优化决策过程,并改善团队协作。本文将深入探讨AI如何辅助软件架构师的实际工作,具体分析AI在需求分析、架构设计、代码生成、测试和优化等环节的应用。 阅读详情

相关推荐

Kali Linux实战:5种局域网DoS攻击手法全解析(附防御方案)

本文以Kali Linux为平台,深入解析了局域网内五种典型的DoS攻击手法,包括TCP SYN Flood、ICMP Flood、MAC地址泛洪、DHCP耗尽以及应用层CC攻击模拟。通过实战演示结合Wireshark抓包分析,清晰揭示了攻击原理与流量特征,并提供了从主机加固、防火墙规则到交换机安全配置(如端口安全、DHCP Snooping)等企业级防御方案,旨在帮助安全人员构建纵深防御体系。

weixin_29313423的博客 396

iOS开发之上下文交互菜单(UIContextMenuInteraction)

在iOS13及以后的版本,苹果将用UIContextMenuInteraction取代上文中提到的Peek和Pop的功能,Peek和Pop的功能需要依赖硬件设备,UIContextMenuInteraction则摆脱了对硬件的依赖,本文将对UIContextMenuInteraction功能展开讲解。

郭永明的技术专栏 8645

电磁波成像技术全解析:从γ射线到无线电波的应用实践

本文全面解析电磁波成像技术,从γ射线到无线电波的应用实践。详细介绍了不同波长电磁波的特性与实用场景,包括医疗影像、工业检测、安防监控等领域。特别探讨了X射线、红外热成像、毫米波雷达等前沿技术的实战应用,为读者提供技术选型指南和操作技巧。

weixin_29305337的博客 293

iOS16适配

苹果在9月13号凌晨(北京时间)发布 iOS 16,该系统的设备可能会因为各种原因,导致功能不可用和UI错乱等问题,我们需要做好适配iOS 16。

u012938194的专栏 5746

Zabbix7.0实践:专线线路监控场景1

本文介绍了专线互联线路远程Ping监控的实现方案。针对运营商中间设备导致端口状态无法真实反映线路通断的问题,提出通过脚本执行端到端Ping检测的方案。具体实现包括:1)使用Expect脚本登录设备执行Ping测试并格式化结果;2)通过Shell脚本处理线路信息并生成JSON格式数据;3)配置Zabbix监控系统,创建自动发现规则和监控项原型,实现线路状态的自动监控。该方案适用于专线数量不多但重要的场景,能够有效检测中间有运营商设备的专线线路通断状态,最终在Zabbix中实现可视化的告警展示。

2301_80016499的博客 779

从零开始:手把手教你规划与部署华为FusionCompute虚拟化平台(含网络规划避坑指南)

本文详细介绍了华为FusionCompute虚拟化平台的规划与部署流程,特别针对网络规划中的常见问题提供了避坑指南。从硬件软件清单检查、网络平面配置到VRM部署方案选择,帮助用户高效完成部署并优化性能,适用于云计算环境中的虚拟化平台搭建。

weixin_28693447的博客 243

XCode14 & iOS16 适配问题汇总

iOS 16适配新特性 新控件添加

多分享一点点,共同进步一点点 2128

Python逆向爬取Tik Tok,MsToken,X-Bogus以及signature

tiktok作为字节海外的自媒体平台,具有很非常大的价值,本文旨在教会大家实现Tik Tok的签名获取以及数据的最终爬取。

weixin_74305707的博客 3268

iOS16新特性及开发适配

iOS 16 满载全新的个性化功能、更具深度的智能技术,以及更多无缝的沟通与共享方式,让 iPhone 的体验更进一步。13、隐私权限增强,如通过 UIDevice 获取设备名称时,无法获取用户的信息,只能获取设备对应的名称。

super_man_ww的博客 9140

DCDC电路断电时放电波形发生震荡和电压跳变问题,如何解决?

DCDC电路断电时放电波形发生震荡和电压跳变问题: 做的一个项目需要用单片机ADC采集电压,要让单片机感应到电压降到3.1V开始往FLASH里存数据,单片机2.4V基本上就工作不了,(根据单片机手册的,擦写的时间在40mS在左右)所以3.1V降到2.4V的时间必须要大于40mS岁以上,在单片机VCC处加了一个100nF的电容,理论仿真下来150mS左右发现存不进去,用示波器抓了一下波形,发现放电时震荡很严重,实际3.1V到2.4V时间只有10ms左右,这个肯定存不进去; 请教师傅说是应该时前级DCDC开关电

**My Coding Family** 1964

OpenClaw三层记忆系统:让你的AI助理记住你的习惯,越用越顺手

对于更早的、已经移出滑动窗口的对话内容,我们没有直接丢弃,而是用大模型做摘要压缩,只保留核心信息,然后把摘要存入短期会话记忆的末尾,或者长期用户记忆。比如,10轮之前的对话内容,我们会压缩成:“用户之前查询了仓山万达店4月1日-4月7日的库存数据,对报表的要求是纯文本,不要Markdown”,既保留了核心信息,又不会占用太多上下文窗口。如果说Agent的执行链路是AI的“骨架”,工具调用体系是AI的“手脚”,那么记忆系统就是AI的“大脑”

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 378

iOS UIMenuController 用法

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

yizhiliulangdemiao的博客 1112

一文整理深度学习【深度学习linux的docker+pytorch+cuda+nvidia-docker+vscode配置】

docker+pytorch+cuda+nvidia-docker+vscode

Edward的博客 1335

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

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

iOS中UIMenuController基本使用

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

iosWorker的博客 5857

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

iOS中UIMenuController的使用

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

专注移动开发 1105

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

UIMenuController——颜婧

什么是UIMenuController? UIMenuController是UIKit里面的控件 UIMenuController的作用在开发中弹出的菜单栏 后面介绍了菜单栏显示中文的设置 有哪些控件是自带UIMenuController菜单栏效果的呢? UITextFieldUITextViewUIWebView 主要介

tarena_3G的博客 858

ios部分阴影_iOS UIMenuController UIMenuItem第2部分

ios部分阴影This is the second part in the series of tutorials on UIMenuController. In this tutorial, we’ll be implementing the UIMenuController on a Label and UITextField. We’ll see how can switch from on...

从零开始的教程世界 336

iOS UI: UIMenuController | InputView 折腾记

本来 UIMenuController 这个东西挺简单的. 直到… 遇到 InputView, 我就醉了, 程序也崩溃了.这里以 Demo 为主, 来说明问题.实现的效果很简单, 如下图ViewController.m#import "ViewController.h"@interface ViewController ()// 罪魁祸首在这里 @property (nonatomic, str

CodingMan 2456

UIMenuController

UIMenuController的介绍 什么是UIMenuController? UIMenuController是UIKit里面的控件 UIMenuController的作用在开发中弹出的菜单栏 后面介绍了菜单栏显示中文的设置 有哪些控件是自带UIMenuController菜单栏效果的呢? UI

ios_yanjing的博客 365

iOS UIMenuController

UIMenuController即菜单控制器,是一个单例对象,用来复制,粘贴,删除等内容的操作。 使用方法,显示默认弹框: - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { UIMenuController *menu = [UIMenuController...

weixin_30423977的博客 161

iOS开发之UIMenuController的基本使用

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33881050的博客 181

iOS —— Cell + UIMenuController

实现长按弹出菜单栏需要做3点: 1.在view(cell)或者viewController中调用-becomeFirstResponder方法; 2.你的view获得或者view controller需要实现 -canBecomeFirstResponder 方法,返回YES; 3.你的view获得或者view controller需要实现-canPerformA

天空 652

ios开发之实现长按UITableViewCell弹出UIMenuController

项目中需要这个功能,网上找了下资料,有的说得不是很清楚,走了很多弯路才实现了,下面是实现步骤: 1.给cell添加UILongPressGestureRecognizer和相应处理事件 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)

sinat_织梦者的博客 421

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

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

qq_33777090的博客 829

UIMenuController详解

UIMenuController的介绍 什么是UIMenuController? UIMenuController是UIKit里面的控件 UIMenuController的作用在开发中弹出的菜单栏 后面介绍了菜单栏显示中文的设置 有哪些控件是自带UIMenuController菜单栏效果的呢? UITextField

qq_450351763的博客 414
上一篇: ios开发 UI高级 图形上下文
下一篇: 苹果公司开发者账号申请
A_StayFoolish
博客等级 码龄10年 0粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值