UIMenuController Пользовательские элементы
Я создал UIMenuController и установил для него пользовательский пункт меню так:
UIMenuController *menuController = [UIMenuController sharedMenuController];
UIMenuItem *item1 = [[UIMenuItem alloc] initWithTitle:@"Do This" action:@selector(item1)];
[menuController setMenuItems:[NSArray arrayWithObject:item1]];
Но я хотел, чтобы этот объект был единственным, чтобы появиться, поэтому я добавил этот код:
- (BOOL)canPerformAction: (SEL)action withSender: (id)sender {
BOOL answer = NO;
if (action == @selector(item1))
answer = YES;
return answer;
}
Проблема в том, что он по-прежнему показывает другие элементы ## Заголовок ##, такие как "Выбрать", "Выбрать все" и "Вставить". Это может быть связано с тем, что это отображается в UITextView
, Но как мне остановить отображение всех других элементов?
1 ответ
Решение
Я думаю, что это один из немногих случаев, когда вы хотите подкласс UITextView
, Я только что попробовал это с помощью следующего кода, и единственный отображаемый пункт меню - это мой пункт " Что-то сделать".
От моего 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
Код для моего MyTextView.h
:
// MyTextView.h
#import <UIKit/UIKit.h>
@interface MyTextView :UITextView {
}
@end
Код для MyTextView.m
:
// MyTextView.m
#import "MyTextView.h"
@implementation MyTextView
- (BOOL) canPerformAction:(SEL)action withSender:(id)sender
{
return NO;
}
@end