Я добавил настраиваемое меню в метод - (void)viewDidLoad
моего контроллера представления:
UIMenuItem *menuItem = [[UIMenuItem alloc] initWithTitle:@"Read selected" action:@selector(readSelectedText)];
[UIMenuController sharedMenuController].menuItems = [NSArray arrayWithObject:menuItem];
В том же контроллере я также реализую метод:
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
if (action == @selector(readSelectedText)) {
if (textView.selectedRange.length > 0) {
return YES;
}
return NO;
}
return [super canPerformAction:action withSender:sender];
}
В первый раз, когда я выделяю какой-то текст, в меню есть пункт «Прочитать выбранное», и все работает хорошо. Однако при последующих выделениях текста меню содержит только стандартные элементы системного меню, такие как копирование. вставить и т. д. Я проверил метод - (BOOL)canPerformAction:(SEL)action withSender:(id)sender
, и он никогда не вызывается с действием readSelectedText
(как в первый раз).
Есть идеи, почему это происходит?