Перейти к содержанию
Fire Monkey от А до Я
  • 0

ITextActions не работают под Android


asviridenkov

Вопрос

Возникла   проблема  с  реализацией  реакции  на  текстовое
контекстное  меню  в  Android.  Все работает нормально через поддержку
ITextActions  в  iOS, вызывается CopytoClipboard, a в Android никакой реакции на
нажатие, например, Copy нет.

В стандартном TMemo видимо   используется  какая-то  магия,  т.к.  все  заканчивается  на
TCopyButtonClickListener.OnClick,  который  в  свою  очередь  вызывает
TextService.CopySelectedText  ->  FTextView.copySelectedText, при этом
не  вызываются  ни GetSelection у Memo или Model, ни SetClipboard у
PlatFormAndroid.

В Platform.iOS в обработчике кнопки вызывается  FTextActions.CopyToClipboard, а в Platform.Android TextActions никак не используются.

Как реализовать обработку кнопок контекстного меню под Android? Ну или хотя-бы как это делает стандартный TMemo?

 

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Администраторы

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

Если будет новая информация, я вам ее передам.

Ссылка на комментарий
  • 0

Спасибо, я в итоге нашел как исправить - нужно при окончании выделения копировать его в FTextService.Text и плюс обязательна корректная реализация GetSelectionBounds.

Но то, что оно не работает через ITextActions - не очень хорошо.

Параллельно еще одна проблема выяснилась - невозможно показать контекстное меню, если нет клавиатуры на экране.

В коде жестко зашито

if TVirtualKeyboardState.Visible in VirtualKeyboardAndroid.VirtualKeyboardState then
  DoShowContextMenu;

Это неправильно, т.к. не позволяет копировать текст из read-only контролов без показа клавиатуры, которая тут не нужна.

20 часов назад, Brovin Yaroslav сказал:

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

Если будет новая информация, я вам ее передам.

 

Ссылка на комментарий
  • 0
  • Администраторы

Я понимаю, работа с текстом вообще по-моему должна быть пересмотрена, так как не дает нужной гибкости и порождает потенциальные проблемы.

P.S. Я заведу сегодня багу.

Ссылка на комментарий
  • 0

Такое поведение обусловлено особенностями взаимодействия с системными классами ввода текста на Android, а также с особенностями взаимодействия Delphi-приложения с нативной частью приложения. Из-за некоторых ограничений в текущей версии функции копи-паста выполняются нативной частью, без вызова Delphi-интерфейсов

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...