UIMenuController увольняется сразу после представления

Я создал подкласс UIWebView, чтобы добавить пользовательские функции UIMenuController, и он работал довольно хорошо до iOS 9. Я не уверен, что изменилось, но теперь я сталкиваюсь с ситуацией, когда когда я нажимаю на ссылку, это должно отображать меню , меню ненадолго появляется, но закрывается (больше я не нажимаю).

Мне трудно понять, откуда взялось это увольнение. Я наблюдаю уведомление UIMenuControllerDidHideMenuNotification, и оно действительно вызывается сразу после исчезновения меню, но мне трудно найти причину увольнения.

Я понимаю, что есть много разных проблем, которые могут скрываться, но мне интересно, сталкивался ли кто-нибудь с чем-то подобным раньше? Можно ли как-то отследить причину увольнения?

введите описание изображения здесь


person Lizza    schedule 25.09.2015    source источник
comment
Возможно, если бы вы могли опубликовать весь код, связанный с отображением/скрытием контроллера меню, мы могли бы помочь больше.   -  person Istvan    schedule 07.10.2015
comment
Я думаю, вам нужно показать код?   -  person Rory McKinnel    schedule 07.10.2015


Ответы (4)


У меня была такая же проблема с iOS9, я думаю, это происходит в результате нескольких процессов. Это не идеальное решение, но... После того, как я стал первым ответчиком, я добавил DELAY перед setMenuVisible:YES.

[самостоятельный селектор:@селектор(showMenuController:) withObject:point afterDelay:0.4];

person Elad    schedule 07.10.2015
comment
Работал отлично! Я назначу награду, как только это позволит мне. Спасибо - person Lizza; 07.10.2015

Попробуйте добавить следующий метод в свой контроллер представления.

- (BOOL) canBecomeFirstResponder { 
   return YES; 
}
person Abhinav    schedule 25.09.2015
comment
Я должен был уточнить, у меня есть это там. - person Lizza; 25.09.2015
comment
Я понимаю. Вы также вызываете -becomeFirstResponder в представлении или контроллере представления? - person Abhinav; 25.09.2015
comment
Да, я звоню beFirstResponder до того, как должен отображаться menuController. Это происходит из представления, а не из VC. Спасибо за вашу помощь, кстати. - person Lizza; 25.09.2015

Я столкнулся с аналогичной проблемой, пытаясь отобразить UIMenuController внутри пользовательского представления. И упомянутое выше исправление задержки не сработало.

Чтобы исправить это, мне пришлось добавить переопределения в canBecomeFirstResponder, чтобы он возвращал true как для моего пользовательского представления, так и для viewController, в котором он содержался.

person NDobos    schedule 25.01.2018

Это странно; однако в моем случае я установил для UIFont метки значение .SFUIText-Light, и это привело к автоматическому закрытию контроллера меню. Решение состоит в том, чтобы изменить шрифт на SanFranciscoDisplay.

Кстати, я рекомендую вам использовать git bisect для отладки того, какая фиксация приводит к этой ошибке, если вы используете git в качестве контроля версий.

person Jerome Li    schedule 10.09.2018