首先就是創(chuàng)建
- (void)deleteBtnAction:(UIButton *)deleteBtn
{
[self becomeFirstResponder];// 用于UIMenuController顯示,缺一不可
UIMenuController *menu = [UIMenuController sharedMenuController];
UIMenuItem *item1 = [[UIMenuItem alloc] initWithTitle:@"撤銷" action:@selector(revokeAction)];
UIMenuItem *item2 = [[UIMenuItem alloc] initWithTitle:@"確認" action:@selector(sureAction)];
menu.menuItems = @[item1, item2];
menu.arrowDirection = UIMenuControllerArrowUp;
[menu setTargetRect:deleteBtn.frame inView:deleteBtn.superview];// [menu setTargetRect:所點擊的按鈕Frame inView:按鈕的父視圖];
[menu setMenuVisible:YES animated:YES];
}
用于UIMenuController顯示,不可缺少的方法
-(BOOL)canBecomeFirstResponder{
return YES;
}
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if (action == @selector(revokeAction)) {
return YES;
}
if (action == @selector(sureAction)) {
return YES;
}
return NO;//隱藏系統(tǒng)默認的菜單項
}
我們可以獲取UIMenuController的通知斯碌,從而做出相應(yīng)的操作
//UIMenuControllerWillShowMenuNotification == 將要顯示
//UIMenuControllerDidShowMenuNotification === 已經(jīng)顯示
//UIMenuControllerWillHideMenuNotification == 將要隱藏
//UIMenuControllerDidHideMenuNotification == 已經(jīng)隱藏
//UIMenuControllerMenuFrameDidChangeNotification == 位置大小改變
//UIMenuController已經(jīng)隱藏的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(menuControllerDidHide) name:UIMenuControllerDidHideMenuNotification object:nil];
//通知回調(diào)的方法
- (void)menuControllerDidHide
{
//可以做相應(yīng)的操作
}
效果圖如下
11)效果圖.jpg