【问题标题】:Order of UIMenuItems in custom edit menu自定义编辑菜单中 UIMenuItem 的顺序
【发布时间】:2013-09-27 17:21:59
【问题描述】:

我想将自己的命令添加到选择菜单中,但还要保留标准的“复制”、“剪切”等命令。我用这个:

    UIMenuItem *myItem = [[UIMenuItem alloc] initWithTitle:@"My Command" action:@selector(myCommand:)];
    [[UIMenuController sharedMenuController] setMenuItems:[NSArray arrayWithObjects: myItem, nil]];

但这会将我的命令添加到编辑菜单中列表的最后。我希望我的命令首先出现在其中。我怎样才能做到这一点?

【问题讨论】:

    标签: ios uikit uimenucontroller uiresponder uimenuitem


    【解决方案1】:

    自己解决了。这是我的initWithCoder: 方法中的内容:

        UIMenuItem *myCommandItem = [[UIMenuItem alloc] initWithTitle:@"My Command" action:@selector(myCommandPressed:)];
    
        UIMenuItem *cutItem = [[UIMenuItem alloc] initWithTitle:@"Cut" action:@selector(myCut:)];
        UIMenuItem *copyItem = [[UIMenuItem alloc] initWithTitle:@"Copy" action:@selector(myCopy:)];
        UIMenuItem *pasteItem = [[UIMenuItem alloc] initWithTitle:@"Paste" action:@selector(myPaste:)];
        UIMenuItem *selectItem = [[UIMenuItem alloc] initWithTitle:@"Select" action:@selector(mySelect:)];
        UIMenuItem *selectAllItem = [[UIMenuItem alloc] initWithTitle:@"Select all" action:@selector(mySelectAll:)];
        UIMenuItem *deleteItem = [[UIMenuItem alloc] initWithTitle:@"Delete" action:@selector(myDelete:)];
    
        [[UIMenuController sharedMenuController] setMenuItems:[NSArray arrayWithObjects: myCommandItem,
                                                               cutItem, copyItem, pasteItem, selectItem, selectAllItem, deleteItem, nil]];
    

    现在这个:

    - (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
    
        if (action == @selector(myCommandPressed:)) {
            return YES;
        }
    
        if (action == @selector(myCut:)) {
            return [super canPerformAction:@selector(cut:) withSender:sender];
        }
    
        if (action == @selector(myCopy:)) {
            return [super canPerformAction:@selector(copy:) withSender:sender];
        }
    
        if (action == @selector(myPaste:)) {
            return [super canPerformAction:@selector(paste:) withSender:sender];
        }
    
        if (action == @selector(mySelect:)) {
            return [super canPerformAction:@selector(select:) withSender:sender];
        }
    
        if (action == @selector(mySelectAll:)) {
            return [super canPerformAction:@selector(selectAll:) withSender:sender];
        }
    
        if (action == @selector(myDelete:)) {
            return [super canPerformAction:@selector(delete:) withSender:sender];
        }
    
        return NO;
    }
    

    最后:

    - (void) myCommandPressed: (id) sender {
        NSLog(@"My Command pressed");
    }
    
    
    - (void) myCut: (id) sender {
        [self cut:sender];
    }
    
    - (void) myCopy: (id) sender {
        [self copy:sender];
    }
    
    - (void) myPaste: (id) sender {
        [self paste:sender];
    }
    
    - (void) mySelect: (id) sender {
        [self select:sender];
    }
    
    - (void) mySelectAll: (id) sender {
        [self selectAll:sender];
    }
    
    - (void) myDelete: (id) sender {
        [self delete:sender];
    }
    

    【讨论】:

    • 我把第一块代码放在了一个ViewController的initWithCoder中,但是副本还是先出现。
    猜你喜欢
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    相关资源
    最近更新 更多