Обновление UIMenuController на лету

Мое приложение имеет возможность всплывающего меню. Когда нажата кнопка «Выбрать все», я хочу включить кнопку «Удалить». Однако я не смог заставить это работать.

Вот пример проекта, иллюстрирующий проблему. Запустите его, затем нажмите кнопку «Меню», нажмите «Выбрать все». Кнопка «Удалить» должна появиться сразу, но она появляется только тогда, когда вы скрываете меню, а затем показываете его снова. Как я могу это исправить?


person jtbandes    schedule 04.01.2011    source источник


Ответы (2)


Следующее делает трюк:

- (void)didHide:(NSNotification *)notif {
    UIMenuController *mc = [UIMenuController sharedMenuController];
    dispatch_async(dispatch_get_global_queue(0,0), ^{
        dispatch_async(dispatch_get_main_queue(), ^{
            [mc update];
            [mc setMenuVisible:YES animated:YES];
        });
    });
}

Однако я заметил, что это работает не очень надежно, например, при установке animated на NO меню не обновляется на лету.

person Felix    schedule 04.01.2011
comment
я пытался сделать это. Не могу обновить меню. Пожалуйста помоги - person CKT; 27.01.2011
comment
У меня аналогичная проблема с UIMenuController. После повторного нажатия на один из пунктов меню мне нужны некоторые элементы меню. Поэтому я использую приведенный выше код. Он отлично работает в iOS6, но в iOS7 любой параметр targetFrame im для UIMenuController не отражает, его представление где-то в представлении с неправильным направлением стрелки. - person Sandeep; 03.12.2013

Это решено в iOS 5 (rdar://problem/8819322).

person jtbandes    schedule 20.06.2011