2010-08-21 13 views
14

J'ai créé un UIMenuController et ont mis un élément de menu personnalisé comme ceci:UIMenuController personnalisés Articles

UIMenuController *menuController = [UIMenuController sharedMenuController]; 
UIMenuItem *item1 = [[UIMenuItem alloc] initWithTitle:@"Do This" action:@selector(item1)]; 
[menuController setMenuItems:[NSArray arrayWithObject:item1]]; 

Mais je voulais cet objet d'être le seul à apparaître alors j'ai ajouté ce code:

- (BOOL)canPerformAction: (SEL)action withSender: (id)sender { 
    BOOL answer = NO; 

    if (action == @selector(item1)) 
     answer = YES; 

    return answer; 
} 

Le problème est qu'il montre encore d'autres ## Heading ## éléments, tels que "Select", "Select All" et "Paste". Ceci peut être lié à l'affichage de ce code dans un UITextView. Mais comment puis-je arrêter d'afficher tous les autres éléments?

Répondre

16

Je pense que c'est l'un des rares cas où vous voulez sous-classer UITextView. J'ai juste essayé ceci avec le code suivant, et le seul article de menu qui est montré est mon faire quelque chose article.

De mon TestViewController.m

@implementation TestViewController 

- (void) doSomething: (id) sender 
{ 
    NSLog(@"Doing something"); 
} 

- (void) viewDidLoad 
{ 
    UIMenuController *menuController = [UIMenuController sharedMenuController]; 
    UIMenuItem *item = [[[UIMenuItem alloc] initWithTitle: @"Do Something" 
     action: @selector(doSomething:)] autorelease]; 
    [menuController setMenuItems: [NSArray arrayWithObject: item]]; 
} 

@end 

Code pour mon MyTextView.h:

// MyTextView.h 

#import <UIKit/UIKit.h> 

@interface MyTextView :UITextView { 

} 

@end 

Code pour MyTextView.m:

// MyTextView.m 

#import "MyTextView.h" 

@implementation MyTextView 

- (BOOL) canPerformAction:(SEL)action withSender:(id)sender 
{ 
    return NO; 
} 

@end 
+0

Impressionnant, merci beaucoup! – Joshua

+0

@Joshua, avez-vous résolu votre problème avec ce code? pouvez-vous me parler à ce sujet, parce que j'essaie cette réponse, mais le problème n'est toujours pas résolu @ St3fan, avez-vous une autre suggestion pour moi? –

+0

cela n'a pas fonctionné. encore copier, coller – BDGapps