資料介紹
軟件簡介
TSMenuLabel是一個給Label加menuController的控件
0. 需求分析
需要復制商品標題,需要在Label上加MenuController,但是UILabel是自己不帶MenuController,所以自己寫了一個
### 1. 效果 TSMenuLabel 是繼承自UILabel的控件,給UILabel添加了手勢,并添加了menuViewController,點擊會有事件
效果查看:
2. 封裝方法
/** ?初始化方法?@param?menuType?彈窗類型 ?@param?gestureType?手勢類型 ?@return?返回label ?*/ +?(instancetype)mneuLabelWithMenuType:(TSMneuLabelMenuType)menuType ???????????????????????andGestureType:(TSMneuLabelGestureType)gestureType;
3. 原理
讓UILabel能處理MenuControler,需要設置以下代碼
-?(BOOL)canBecomeFirstResponder{????return?YES; }/** ?*?label能執行哪些操作(比如copy,?paste等等) ?*?@return??YES:支持這種操作 ?*??由于這里需要實現自定義的中文菜單,而不是使用默認的,所以這里選擇NO ?*/-?(BOOL)canPerformAction:(SEL)action?withSender:(id)sender{????//這里也是間接影響顯示在UIMenuController的控件 ????if?(action?==?@selector(copy:))?{????????return?YES;//如果要去掉?拷貝?這里返回NO ????}else?if?(action?==?@selector(flag:)){????????return?NO;//這里如果是no?就不允許操作和顯示 ????}else?if?(action?==?@selector(approve:)){????????return?YES; ????}else?if?(action?==?@selector(deny:)){????????return?YES; ????}else{????????return?[super?canPerformAction:action?withSender:sender]; ????} }
4. 擴展
更多手勢和事件需要自己添加,添加方法:
-
添加事件
在枚舉中添加一個枚舉,比如TSMneuLabelTypeDemo
typedef?NS_ENUM(NSInteger,?TSMneuLabelMenuType)?{ ????TSMneuLabelTypeDefault,//啥也沒有 ????TSMneuLabelTypeCopy?=?1,//只有復制 ????TSMneuLabelTypeDemo,//栗子};
在處理手勢中添加menu
-(void)handleTap:(UIGestureRecognizer*)?recognizer {????????case?TSMneuLabelTypeDemo:{ ????????????UIMenuItem?*flag?=?[[UIMenuItem?alloc]?initWithTitle:@"abc"?action:@selector(flag:)]; ????????????UIMenuItem?*approve?=?[[UIMenuItem?alloc]?initWithTitle:@"Approve"?action:@selector(approve:)]; ????????????UIMenuItem?*deny?=?[[UIMenuItem?alloc]?initWithTitle:@"分享"?action:@selector(deny:)]; ????????????[menu?setMenuItems:@[approve,flag,deny]]; ????????}????????????break; }
添加事件
-?(void)approve:(id)sender?{ ????NSLog(@"Approve"); }
允許事件
-?(BOOL)canPerformAction:(SEL)action?withSender:(id)sender{????//這里也是間接影響顯示在UIMenuController的控件 ????if?(action?==?@selector(copy:))?{????????return?YES;//如果要去掉?拷貝?這里返回NO ????}else?if?(action?==?@selector(flag:)){????????return?NO;//這里如果是no?就不允許操作和顯示 ????}else?if?(action?==?@selector(approve:)){????????return?YES; ????}else?if?(action?==?@selector(deny:)){????????return?YES; ????}else{????????return?[super?canPerformAction:action?withSender:sender]; ????} }
-
添加手勢
首先添加一個枚舉
typedef?NS_ENUM(NSInteger,?TSMneuLabelGestureType)?{ ????TSMneuLabelGestureTypeNone,//強制不作處理 ????TSMneuLabelGestureTypeDefault?=?0,//沒賦值會走tap ????TSMneuLabelGestureTypeTap,//默認單擊 ????TSMneuLabelGestureTypeLongTap,//長按};
然后添加一個手勢
-?(void)setGestureType:(TSMneuLabelGestureType)gestureType{????//移除所有手勢 ????for?(UIGestureRecognizer?*ges?in?self.gestureRecognizers)?{ ????????[self?removeGestureRecognizer:ges]; ????}????switch?(gestureType)?{????????case?TSMneuLabelGestureTypeTap:?{ ????????????UITapGestureRecognizer?*touch?=?[[UITapGestureRecognizer?alloc]?initWithTarget:self?action:@selector(handleTap:)]; ????????????touch.numberOfTapsRequired?=?1; ????????????[self?addGestureRecognizer:touch]; ????????}????????????break;????????case?TSMneuLabelGestureTypeLongTap:?{ ????????????UILongPressGestureRecognizer?*touch?=?[[UILongPressGestureRecognizer?alloc]?initWithTarget:self?action:@selector(handleTap:)]; ????????????[self?addGestureRecognizer:touch]; ????????}????????????break; ????????default: ????????????break; ????} }
-
更多
-
拋出事件可以利用已經定義好的Block來處理 ``` typedef void(^TSMneuLabelHandler)(TSMneuLabel * menuLabel);
- labview的按鈕控件匯總 384次下載
- 大彩串口屏控件教程15 - 圓形進度條控件應用
- 大彩串口屏控件教程14 - 串口屏歷史曲線控件應用
- 大彩串口屏控件教程13 - 串口屏數據記錄控件
- 大彩串口屏控件教程11 - 串口屏滑動選擇控件應用
- 大彩串口屏控件教程10 - 串口屏菜單控件的應用
- 大彩串口屏控件教程9 - 串口屏曲線控件應用
- 大彩串口屏控件教程8 - 串口屏圖標控件
- 大彩串口屏控件教程7 - 串口屏動畫控件的應用
- 大彩串口屏控件教程6 - 串口屏RTC控件的應用
- 大彩串口屏控件教程4 - 串口屏滑塊控件應用
- 大彩串口屏控件教程2 - 串口屏文本控件應用
- 大彩串口屏控件教程1 - 串口屏按鈕控件應用
- AN1246中文手冊之如何在Microchip圖形庫中創建控件
- 如何在Microchip圖形庫中創建控件 2次下載
- 半加器和全加器的功能特點 1782次閱讀
- 機智云ESP8266開發板RGB彩燈控件 442次閱讀
- 圖片動畫控件和Video image控件的使用方法 1023次閱讀
- LabVIEW Tab選項卡控件XTab的使用方法 2532次閱讀
- comboBox控件的數據綁定方法是什么 3601次閱讀
- 活學活用LTspice進行電路設計—用Label Net繪制清晰電路圖 5621次閱讀
- LabVIEW的編程之道—Quick Drop-隱藏控件 4395次閱讀
- AWTK控件serial_widget的使用方法 1699次閱讀
- LabVIEW分割條控件的設置和界面設計實例 6999次閱讀
- 如何給功放機加功力? 9472次閱讀
- 單獨給手機鋰電池充電需不需要加一個保護板 2w次閱讀
- 電路板加電的技巧分享 6666次閱讀
- LabWindows/CVI虛擬儀器 Tab 控件 7355次閱讀
- Linux系統軟件加殼保護技術的改進設計 1422次閱讀
- 技術評測:一加3T相比一加3究竟好在哪? 1.7w次閱讀
下載排行
本周
- 1A7159和A7139射頻芯片的資料免費下載
- 0.20 MB | 55次下載 | 5 積分
- 2PIC12F629/675 數據手冊免費下載
- 2.38 MB | 36次下載 | 5 積分
- 3PIC16F716 數據手冊免費下載
- 2.35 MB | 18次下載 | 5 積分
- 4dsPIC33EDV64MC205電機控制開發板用戶指南
- 5.78MB | 8次下載 | 免費
- 5STC15系列常用寄存器匯總免費下載
- 1.60 MB | 7次下載 | 5 積分
- 6模擬電路仿真實現
- 2.94MB | 4次下載 | 免費
- 7PCB圖繪制實例操作
- 2.92MB | 2次下載 | 免費
- 8零死角玩轉STM32F103—指南者
- 26.78 MB | 1次下載 | 1 積分
本月
- 1ADI高性能電源管理解決方案
- 2.43 MB | 452次下載 | 免費
- 2免費開源CC3D飛控資料(電路圖&PCB源文件、BOM、
- 5.67 MB | 141次下載 | 1 積分
- 3基于STM32單片機智能手環心率計步器體溫顯示設計
- 0.10 MB | 137次下載 | 免費
- 4A7159和A7139射頻芯片的資料免費下載
- 0.20 MB | 55次下載 | 5 積分
- 5PIC12F629/675 數據手冊免費下載
- 2.38 MB | 36次下載 | 5 積分
- 6如何正確測試電源的紋波
- 0.36 MB | 19次下載 | 免費
- 7PIC16F716 數據手冊免費下載
- 2.35 MB | 18次下載 | 5 積分
- 8Q/SQR E8-4-2024乘用車電子電器零部件及子系統EMC試驗方法及要求
- 1.97 MB | 8次下載 | 10 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935121次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420062次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233088次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191367次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73810次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論
查看更多