2013-09-27 40 views
0

我想将自己的命令添加到选择菜单,但也保留标准的“复制”,“剪切”等命令。我使用这个:自定义编辑菜单中的UIMenuItem的顺序

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

但是这增加了我的命令到编辑菜单的列表的最后。我希望我的命令首先出现在它中。我怎么能做到这一点?

回答

3

自己解决。以下是我的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]; 
} 
+0

如何显示呢? –