Меню UIMenuController автоматически исчезает при наличии нескольких UITextView

Я пытаюсь заставить UIMenuController отображать меню копирования и вставки при длительном нажатии UITextView. Работает, если на экране только один UITextView. Однако, если на экране есть несколько UITextViews, долгое нажатие на активный UITextView (тот, который является firstResponder) вызывает отображение лупы, когда палец отпущен, отображается меню копирования и вставки, однако меню автоматически закрывается в менее одной секунды.

Ниже приведена иерархия представлений:
UIView -> UIImageView -> MyUIView -> UITextView
| __> MyUIView -> UITextView

Я установил для userInteractionEnabled и editable из неактивных UITextViews значение NO. Есть идеи, как сделать так, чтобы меню копирования и вставки оставалось?

Я использую Xcode 4.6.3 и тестирую его на iPhone 4S с iOS 7.0.


person jiexli    schedule 02.11.2013    source источник


Ответы (2)


Очевидно, всякий раз, когда происходит изменение в firstResponder, UIMenuController закрывается!

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

person Felipe Baytelman    schedule 04.12.2013
comment
Как проверить, кто закрывает меню. - person Zuzana Paulis; 21.04.2017

Я нашел решение. В вопросе не хватило подробностей, наверное, поэтому и не было ответов.

Ключевым отсутствующим элементом является то, что я разделил UITextView на подклассы, и он переопределяет layoutSubviews (см. поведение поля с ошибками с динамическим изменением размера UITextView). Решением является просто удаление функции layoutSubviews, и я использовал предложение Krafter для решения проблемы с отключением UITextView.

person jiexli    schedule 17.11.2013