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所有你需要添加下面的代码到你的UITextField
或UITextView
的代表:
- (BOOL)canPerformAction: (SEL)action withSender: (id)sender { BOOL answer = NO; if (action == @selector(item1)) { answer = YES; } if (action == @selector(item2)) { answer = YES; } return answer; }
其中item1
和item2
是item2
中对象的名称。
根据我的经验,如果您使用的是UITextView
,复制,粘贴,剪切和全选菜单项将保留,在这种情况下将下面的代码添加到UITextView
的子类。
- (BOOL) canPerformAction:(SEL)action withSender:(id)sender { if (action == @selector(cut:) || action == @selector(copy:) || action == @selector(paste:) || action == @selector(selectAll:)) { return YES; } }