資料介紹
軟件簡介
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次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論