【问题标题】:iPhone/iPad context menuiPhone/iPad 上下文菜单
【发布时间】:2010-09-30 17:26:19
【问题描述】:

我说的是当您选择文本块时显示的菜单,它为您提供剪切/粘贴/复制的选项。我想出了如何在菜单中再添加一个选项,但是如果我添加两个或更多选项,它会首先显示“更多”。单击它将显示我添加的所有选项。但是有没有办法显示我预先添加的所有选项?没有“更多”菜单项?

【问题讨论】:

    标签: iphone objective-c ipad ios


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 不是我不想要这些。我需要再添加两个菜单项。
    • 然后你仍然使用我发布的东西,而不是使用@selector(copy:),将其更改为@selector(copyText:),然后实现你自己的 - (void)copyText 方法复制。那么您的其他项目将不会被推送到更多菜单。
    • 我可以更改菜单项的文本吗?
    • 是的,您可以通过创建自定义 UIMenuItems-developer.apple.com/library/ios/#documentation/UIKit/Reference/… 来实现
    【解决方案2】:

    我假设你在谈论UIMenuController。如果您不想看到 Copy/Paste/Cut/Delete/Select/SelectAll,您需要将以下代码添加到您的 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;
    }
    

    其中item1item2UIMenuController.menuItems 中对象的名称。

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

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

    【讨论】:

    • 我不想禁用这些选项,我需要再添加两个自定义选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    相关资源
    最近更新 更多