資料介紹
軟件簡(jiǎn)介
TSMenuLabel是一個(gè)給Label加menuController的控件
0. 需求分析
需要復(fù)制商品標(biāo)題,需要在Label上加MenuController,但是UILabel是自己不帶MenuController,所以自己寫了一個(gè)
### 1. 效果 TSMenuLabel 是繼承自UILabel的控件,給UILabel添加了手勢(shì),并添加了menuViewController,點(diǎn)擊會(huì)有事件
效果查看:
2. 封裝方法
/** ?初始化方法?@param?menuType?彈窗類型 ?@param?gestureType?手勢(shì)類型 ?@return?返回label ?*/ +?(instancetype)mneuLabelWithMenuType:(TSMneuLabelMenuType)menuType ???????????????????????andGestureType:(TSMneuLabelGestureType)gestureType;
3. 原理
讓UILabel能處理MenuControler,需要設(shè)置以下代碼
-?(BOOL)canBecomeFirstResponder{????return?YES; }/** ?*?label能執(zhí)行哪些操作(比如copy,?paste等等) ?*?@return??YES:支持這種操作 ?*??由于這里需要實(shí)現(xiàn)自定義的中文菜單,而不是使用默認(rèn)的,所以這里選擇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. 擴(kuò)展
更多手勢(shì)和事件需要自己添加,添加方法:
-
添加事件
在枚舉中添加一個(gè)枚舉,比如TSMneuLabelTypeDemo
typedef?NS_ENUM(NSInteger,?TSMneuLabelMenuType)?{ ????TSMneuLabelTypeDefault,//啥也沒有 ????TSMneuLabelTypeCopy?=?1,//只有復(fù)制 ????TSMneuLabelTypeDemo,//栗子};
在處理手勢(shì)中添加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]; ????} }
-
添加手勢(shì)
首先添加一個(gè)枚舉
typedef?NS_ENUM(NSInteger,?TSMneuLabelGestureType)?{ ????TSMneuLabelGestureTypeNone,//強(qiáng)制不作處理 ????TSMneuLabelGestureTypeDefault?=?0,//沒賦值會(huì)走tap ????TSMneuLabelGestureTypeTap,//默認(rèn)單擊 ????TSMneuLabelGestureTypeLongTap,//長(zhǎng)按};
然后添加一個(gè)手勢(shì)
-?(void)setGestureType:(TSMneuLabelGestureType)gestureType{????//移除所有手勢(shì) ????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; ????} }
-
更多
-
拋出事件可以利用已經(jīng)定義好的Block來處理 ``` typedef void(^TSMneuLabelHandler)(TSMneuLabel * menuLabel);
- 精美的TF自定義控件源文件合集 31次下載
- labview的按鈕控件匯總 356次下載
- 大彩串口屏控件教程15 - 圓形進(jìn)度條控件應(yīng)用
- 大彩串口屏控件教程14 - 串口屏歷史曲線控件應(yīng)用
- 大彩串口屏控件教程13 - 串口屏數(shù)據(jù)記錄控件
- 大彩串口屏控件教程11 - 串口屏滑動(dòng)選擇控件應(yīng)用
- 大彩串口屏控件教程10 - 串口屏菜單控件的應(yīng)用
- 大彩串口屏控件教程9 - 串口屏曲線控件應(yīng)用
- 大彩串口屏控件教程8 - 串口屏圖標(biāo)控件
- 大彩串口屏控件教程7 - 串口屏動(dòng)畫控件的應(yīng)用
- 大彩串口屏控件教程6 - 串口屏RTC控件的應(yīng)用
- 大彩串口屏控件教程4 - 串口屏滑塊控件應(yīng)用
- 大彩串口屏控件教程2 - 串口屏文本控件應(yīng)用
- 大彩串口屏控件教程1 - 串口屏按鈕控件應(yīng)用
- AN1246中文手冊(cè)之如何在Microchip圖形庫中創(chuàng)建控件
- 機(jī)智云ESP8266開發(fā)板RGB彩燈控件 176次閱讀
- 圖片動(dòng)畫控件和Video image控件的使用方法 338次閱讀
- LabVIEW Tab選項(xiàng)卡控件XTab的使用方法 1763次閱讀
- comboBox控件的數(shù)據(jù)綁定方法是什么 3211次閱讀
- 活學(xué)活用LTspice進(jìn)行電路設(shè)計(jì)—用Label Net繪制清晰電路圖 4477次閱讀
- LabVIEW的編程之道—Quick Drop-隱藏控件 3894次閱讀
- AWTK控件serial_widget的使用方法 1402次閱讀
- LabVIEW分割條控件的設(shè)置和界面設(shè)計(jì)實(shí)例 6622次閱讀
- 如何給功放機(jī)加功力? 8686次閱讀
- 單獨(dú)給手機(jī)鋰電池充電需不需要加一個(gè)保護(hù)板 1.9w次閱讀
- 電路板加電的技巧分享 6397次閱讀
- LabWindows/CVI虛擬儀器 Tab 控件 7023次閱讀
- Linux系統(tǒng)軟件加殼保護(hù)技術(shù)的改進(jìn)設(shè)計(jì) 1366次閱讀
- 技術(shù)評(píng)測(cè):一加3T相比一加3究竟好在哪? 1.6w次閱讀
- 田洪川VS2005視頻教程:驗(yàn)證控件 508次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多