Tag: uimenucontroller

你如何真正从UIMenuController中删除复制

显然,当您添加多个自定义菜单项时,曾经是一种简单的方法来防止“更多…”标签出现在UIMenuController中。 你只需要删除所有的系统菜单项。 这里还有一个解决方法 ,仍然有复印工作。 您只需使用不同的select器实现自定义复制命令,然后重写canPerformAction:withSender:不显示系统副本: -(BOOL)canPerformAction:(SEL)action withSender:(id)sender { if (action == @selector(copy:)) return NO; else // logic to show or hide other things } 不幸的是,这种方法不再有效(至less在UIWebView子类中)。 canPerformAction:withSender:对除复制以外的每个系统菜单项都会调用:所以结果是始终显示系统复制菜单项。 这意味着如果您有多个自定义菜单项,则始终隐藏在“更多…”之后 那么,有没有办法真正删除系统的副本项目或一些替代的方法,以防止隐藏在“更多…”后面的菜单项? 更新 这是我重写canPerformAction时获得的输出:withSender:注意,该方法从来没有被调用“copy:”操作: cannot perform action cut: with sender <UIMenuController: 0x7227d30>. cannot perform action select: with sender <UIMenuController: 0x7227d30>. cannot perform action selectAll: with sender <UIMenuController: 0x7227d30>. cannot […]

如何显示UITableViewCell的自定义UIMenuItem?

当我长按一个UITableViewCell显示自定义的UIMenuItem时,我想要popup的UIMenuController。 我在viewDidLoad中设置了自定义项目 UIMenuItem *testMenuItem = [[UIMenuItem alloc] initWithTitle:@"Test" action:@selector(test:)]; [[UIMenuController sharedMenuController] setMenuItems: @[testMenuItem]]; 然后我设置所有正确的委托方法。 – (BOOL)tableView:(UITableView *)tableView shouldShowMenuForRowAtIndexPath:(NSIndexPath *)indexPath { return YES; } -(BOOL)tableView:(UITableView *)tableView canPerformAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender { return (action == @selector(copy:) || action == @selector(test:)); } – (BOOL)tableView:(UITableView *)tableView performAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender { if (action == @selector(copy:)) { // do stuff […]