Получите UITextView следующим образом.
//MyUITextView.h
#import <Foundation/Foundation.h>
@interface MyUITextView : UITextView {
}
@end
//MyUITextView.m
#import "MyUITextView.h"
@implementation MyUITextView
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if (action == @selector(menu1:))
return YES;
if (action == @selector(menu2:))
return YES;
return NO;//[super canPerformAction:action withSender:sender];
}
- (void)menu1:(id)sender
{
NSLog(@"in menu1");
}
- (void)menu2:(id)sender
{
NSLog(@"in menu2");
}
@end
В вашем представлении контроллер под viewDidLoad
UIMenuItem *menu1 = [[[UIMenuItem alloc] init]autorelease];
menu1.title = @"MyMenu1";
menu1.action = @selector(menu1:);
UIMenuItem *menu2 = [[[UIMenuItem alloc] init]autorelease];
menu2.title = @"MyMenu2";
menu2.action = @selector(menu2:);
UIMenuController* mc = [UIMenuController sharedMenuController];
mc.menuItems = [NSArray arrayWithObjects: menu1, menu2, nil];
Вам нужно назначить класс для вашего TextView из Interface Builder, если он находится на кончике и если вы создаете его динамически, создайте объект MyUITextView вместо UITextView.
Выше кода добавляет 2 пользовательских меню, когда вы выбираете текст, и когда вы выбираете опцию, он соответственно активирует селектор.
Надеюсь, это поможет.