UIMenuController
- 經(jīng)常可以看到有些軟件中苗踪,在一行文字上按一下济瓢,就彈出一個菜單欄
- 這種效果蘋果自帶了一個,就是我們今天要介紹的
UIMenuController
- 想要實(shí)現(xiàn)這種效果棵帽,分兩種情況熄求,一種是控件自己帶有的,一種是不帶有的控件逗概,我們自己手動添加的
- 控件自己帶有的:UITextField弟晚、UITextView、UIWebView
需要自己添加的控件逾苫,比如說Label
系統(tǒng)自帶的一些操作
- 如果顯示的文字啥的想要復(fù)制卿城、剪切之類的操作,那么可以自定義
- 自定義步驟:
- 自定義控件
- 讓控件成為第一響應(yīng)者
- 然后創(chuàng)建UIMenuController
- 設(shè)置UIMenuController指向的范圍
- 顯示UIMenuController
/** 讓label有資格成為第一響應(yīng)者*/
- (BOOL)canBecomeFirstResponder
{
return YES;
}
/**
* label能執(zhí)行哪些操作(比如copy, paste等等)
* @return YES:支持這種操作
*/
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
// 想要的操作返回YES就行铅搓,具體有什么操作瑟押,可以打印action看,然后實(shí)現(xiàn)相應(yīng)的方法就行
if (action == @selector(cut:) || action == @selector(copy:) || action == @selector(paste:)) return YES;
return NO;
}
// 在需要顯示的時候調(diào)用以下代碼
// label要成為第一響應(yīng)者星掰,UIMenuController的顯示依賴第一響應(yīng)者
// 第一響應(yīng)者變化的時候多望,UIMenuController會自動消失
[self becomeFirstResponder];
// 創(chuàng)建MenuController,是個單例
UIMenuController *menu = [UIMenuController sharedMenuController];
// targetRect: UIMenuController需要指向的矩形框
// targetView: targetRect會以targetView的左上角為坐標(biāo)原點(diǎn)
// 下面兩種方式效果相同
// rect填寫自己的bounds氢烘,那么view就要寫self怀偷,自己
// rect填寫自己的frame,那么View就要寫自己的父控件
[menu setTargetRect:self.bounds inView:self];
// [menu setTargetRect:self.frame inView:self.superview];
[menu setMenuVisible:YES animated:YES];
可以自定義一些操作
- 比如舉報(bào)播玖、點(diǎn)贊椎工、分享等等
- 自定義大體流程還是和上面的一樣,只是需要自己添加MenuItem
// 添加MenuItem
UIMenuItem *share = [[UIMenuItem alloc] initWithTitle:@"分享" action:@selector(share:)];
UIMenuItem *support = [[UIMenuItem alloc] initWithTitle:@"點(diǎn)贊" action:@selector(support:)];
UIMenuItem *report = [[UIMenuItem alloc] initWithTitle:@"舉報(bào)" action:@selector(report:)];
menu.menuItems = @[share, support, report];
// 這個方法中需要返回NO,屏蔽系統(tǒng)自帶的事件
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
return NO;
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者