iPhone / iPad上下文菜单

我在谈论当你select一个文本块时出现的菜单,它给你select剪切/粘贴/复制。 我想出了如何在菜单中添加一个选项,但如果我添加两个或更多的选项,它会首先说“更多”。 点击它会显示我添加的所有选项。 但有没有办法显示所有的选项,我join了前? 没有“更多”菜单项?

您需要使用UIMenuController 。 如果你不想复制/粘贴/剪切,你可以在你的canPerformAction:方法中包含这样的内容:

 - (BOOL)canPerformAction:(SEL)action withSender:(id)sender { if(action == @selector(someSelector:)) return YES; else return NO; } 

创build一个新的菜单项如下所示:

 UIMenuItem *someAction = [[UIMenuItem alloc]initWithTitle:@"Something" action:@selector(doSomething:)]; UIMenuController *menu = [UIMenuController sharedMenuController]; menu.menuItems = [NSArray arrayWithObject:someAction]; [menu update]; 

我假设你在谈论UIMenuController 。 如果你不想看到复制/粘贴/剪切/删除/select/select所有你需要添加下面的代码到你的UITextFieldUITextView的代表:

 - (BOOL)canPerformAction: (SEL)action withSender: (id)sender { BOOL answer = NO; if (action == @selector(item1)) { answer = YES; } if (action == @selector(item2)) { answer = YES; } return answer; } 

其中item1item2item2中对象的名称。

根据我的经验,如果您使用的是UITextView ,复制,粘贴,剪切和全选菜单项将保留,在这种情况下将下面的代码添加到UITextView的子类。

 - (BOOL) canPerformAction:(SEL)action withSender:(id)sender { if (action == @selector(cut:) || action == @selector(copy:) || action == @selector(paste:) || action == @selector(selectAll:)) { return YES; } }