我在长按表格单元格时显示 UIMenuController。我正在使用下面的代码。
- (void)onCellLongPressed:(UILongPressGestureRecognizer *)recognizer {
if (recognizer.state == UIGestureRecognizerStateRecognized) {
ContactTableViewCell *cell = (ContactTableViewCell *)recognizer.view;
[cell becomeFirstResponder];
UIMenuItem *item1 = [[UIMenuItem alloc] initWithTitle:@"ME" action:@selector(setMe)];
UIMenuItem *item2 = [[UIMenuItem alloc] initWithTitle:@"YOU" action:@selector(setYou)];
[theMenu setMenuItems:[NSArray arrayWithObjects:item1, item2, nil]];
UIMenuController *theMenu = [UIMenuController sharedMenuController];
[theMenu setTargetRect:[cell frame] inView:[self tableView]];
[theMenu setMenuVisible:YES animated:YES];
}
}
我的问题是,当我长按一个单元格时,会弹出菜单,其中包含所有默认菜单项。弹出菜单时,我的菜单项“保存”和“删除”未显示。当我选择“更多”菜单时,它们就会显示。我发布了下面的屏幕截图。
屏幕截图 1:长按单元格时弹出的菜单。
屏幕截图 2:当我按屏幕截图 1 中的“更多”菜单项时的菜单。
我希望在长按某个单元格时打开 SCREEN SHOT 2 中的菜单。
- 我在这里做错了什么?
- 我在这里缺少什么?
- 我应该做什么才能让它发挥作用?
最佳答案
要禁用默认项目,您需要 canPerformAction:withSender:
方法返回 NO。这意味着您需要响应者链中的对象不执行请求的操作,或者方法的自定义实现。
关于iphone - 为什么我的 UIMenuItems 显示在 UIMenuController 的 'more' 部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4584281/