iphone - 为什么我的 UIMenuItems 显示在 UIMenuController 的 'more' 部分?

标签 iphone objective-c ios

我在长按表格单元格时显示 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:长按单元格时弹出的菜单。

alt text

屏幕截图 2:当我按屏幕截图 1 中的“更多”菜单项时的菜单。

alt text

我希望在长按某个单元格时打开 SCREEN SHOT 2 中的菜单。

  1. 我在这里做错了什么?
  2. 我在这里缺少什么?
  3. 我应该做什么才能让它发挥作用?

最佳答案

要禁用默认项目,您需要 canPerformAction:withSender: 方法返回 NO。这意味着您需要响应者链中的对象不执行请求的操作,或者方法的自定义实现。

关于iphone - 为什么我的 UIMenuItems 显示在 UIMenuController 的 'more' 部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4584281/

相关文章:

ios - TableView 分割动画转场

iphone - JSON 提取到 iOS 应用程序

iPhone - 如何使用 TableView 单元格?

ios - 在 ASIHTTPRequest 中找不到“libxml/HTMLparser.h”文件

objective-c - 用 canShowCallout 切换 viewController 的注解

ios - 如何使用适用于 iOS 的 NSCoder、NSObject 和 Swift 3 解码 Double

iphone - 在 iOS 应用程序中添加所需的广告

javascript - iBooks 翻页效果在哪里以及如何编程?

ios - 如何在 Obj-C 的运行时中将结构与对象相关联

iphone - 无法使用模型 segue 在 View 上设置标签