2010-08-21 10 views
14

Ich habe eine UIMenuController erstellt und haben sie einen benutzerdefinierten Menüpunkt gesetzt wie folgt:UIMenuController Custom Items

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

Aber ich wollte das Objekt das einzige sein, erscheinen so habe ich diesen Code:

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

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

    return answer; 
} 

Das Problem ist, es zeigt noch andere ## Heading ## Elemente, wie "Select", "Select All" und "Paste". Dies kann etwas damit zu tun haben, dass dies in einer UITextView angezeigt wird. Aber wie höre ich auf, wenn ich alle anderen Objekte nicht anzeigen kann?

Antwort

16

Ich denke, dies ist einer der wenigen Fälle, in denen Sie UITextView Unterklasse werden möchten. Ich habe es gerade mit dem folgenden Code versucht, und der einzige Menüeintrag, der angezeigt wird, ist mein Do Something Element.

Aus meinem 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 für meine MyTextView.h:

// MyTextView.h 

#import <UIKit/UIKit.h> 

@interface MyTextView :UITextView { 

} 

@end 

-Code für MyTextView.m:

// MyTextView.m 

#import "MyTextView.h" 

@implementation MyTextView 

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

@end 
+0

Super, vielen Dank! – Joshua

+0

@Joshua, hast du dein Problem mit diesem Code gelöst? kannst du mir davon erzählen, weil ich diese Antwort versuche, aber das Problem ist immer noch nicht gelöst @ St3fan, hast du noch einen Vorschlag für mich? –

+0

hat es nicht funktioniert. Kopieren Sie noch, Paste – BDGapps