контекстное меню iPhone / iPad - PullRequest
       1

контекстное меню iPhone / iPad

5 голосов
/ 30 сентября 2010

Я говорю о меню, которое появляется при выборе блока текста, которое дает вам возможность вырезать / вставить / скопировать.Я понял, как добавить еще одну опцию в меню, но если я добавлю две или более опций, сначала будет сказано «больше».щелкнув по нему, вы увидите все опции, которые я добавил.Но есть ли способ показать все опции, которые я добавил заранее?без пункта меню «больше»?

Ответы [ 2 ]

7 голосов
/ 30 сентября 2010

Вам необходимо использовать UIMenuController . Если вы не хотите копировать / вставлять / вырезать, вы включите что-то вроде этого в свой метод canPerformAction::

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
     if(action == @selector(someSelector:))
         return YES;
     else 
         return NO;
}

Создание нового пункта меню выглядит следующим образом:

UIMenuItem *someAction = [[UIMenuItem alloc]initWithTitle:@"Something" action:@selector(doSomething:)];

UIMenuController *menu = [UIMenuController sharedMenuController];
menu.menuItems = [NSArray arrayWithObject:someAction];
[menu update];
1 голос
/ 01 октября 2010

Полагаю, вы говорите о UIMenuController. Если вы не хотите видеть Копировать / Вставить / Вырезать / Удалить / Выбрать / Выбрать все, вам нужно добавить следующий код к вашему делегату UITextField или UITextView:

- (BOOL)canPerformAction: (SEL)action withSender: (id)sender {
    BOOL answer = NO;
    if (action == @selector(item1)) {
        answer = YES;
    }
    if (action == @selector(item2)) {
        answer = YES;
    }
    return answer;
}

Где item1 и item2 - имена объектов в UIMenuController.menuItems.

По моему опыту, если вы используете UITextView, пункты меню Копировать, Вставить, Вырезать и Выбрать все останутся, в этом случае добавьте следующий код в подкласс UITextView.

- (BOOL) canPerformAction:(SEL)action withSender:(id)sender {
    if (action == @selector(cut:) || action == @selector(copy:) || action == @selector(paste:) || action == @selector(selectAll:)) {
            return YES;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...