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

Как обойти потерю фокуса ввода близко расположенных TEdit при выделении?


konung

Вопрос

  • Среды: Delphi XE5, XE5 Update 2, XE6
  • Устройство: GalaxyNexus. Ось стоковая Android 4.2.1

На примере стандартной демки MobileControls.

  1. Открываем закладку EDITORS.
  2. Вводим в Edit3 текст "Test test" (не суть. важно что бы было 2 слова).
  3. Скрываем клавиатуру. И долгий тап одному из слов. При этом одно из слов выделяется, появляются кнопки "копировать/вырезать/вставить" и указатели границ выделенного текста 1 и 2:

    post-123-0-57248300-1398172069.jpg

  4. Пытаюсь зажав указатель выделения 2 увеличить или уменьшить область выделения текста.

Ожидается: изменение области выделения текста при перемещении указателя границы 2

В действительности: видимо т.к. контрол item1 расположенный ниже достаточно близко к Edit3 (указатель 2 его перекрывает) то не происходит перемещение указателя границы 2, а фокус переходит к item1 и реакции на его тап:

post-123-0-04522200-1398172075_thumb.jpg

 

Возможно ли и как обойти подобные ситуации?

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

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

  • 0

2 Brovin Yaroslav

 

Вы писали тут: http://fire-monkey.ru/topic/216-kak-uvelichit-oblast-perekhvata-sobytii-myshi-i/#entry791

 

Эммм... Так сказать "тактильно" - не сказал бы, что проблема именно в этом. Потому как в том частном случае описанным мной в принципе не получалось попасть в указатель выделения текста. Пробовалось на нескольких устройствах, с разными разрешениями. И целился в центр аккуратно и т.п. меж тем - левый указатель выделения текста - отрабатывает нормально. Не буду оспаривать. Вам как разработчику виднее. Но ощущение, что контрол расположенный ниже находится, так сказать, приоритетнее в списке того что надо выбирать при тапе, нежели указатель выделения текста.

 

Если пробовать вариант описанный вами: http://fire-monkey.ru/topic/216-kak-uvelichit-oblast-perekhvata-sobytii-myshi-i/#entry792

 

Тогда вопрос - при каких событиях надо расширять логический размер?

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

Тут решение простое.

 

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

 

Система ищет контрол, который будет получать события мыши проверяя их по порядку с конца. Первый найденный будет получать события. В вашем случае вышло так, что нижнее поле ввода создавался после верхнего. И значит оно будет раньше с конца. При нажатии на точку, первым проверяется последний контрол (нижнее поле ввода) на попадание. Вы действительно попадаете в область и события перехватываются. Если же поменять порядок, то верхнее поле.

 

Проверить можете на прикрепленном примере: EditOrdersDemo.zip

 

То же самое на иллюстрации:

post-1-0-07733900-1398247725_thumb.png

post-1-0-61509600-1398247725_thumb.png

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

Ага. Вот оно как :) . Как то не задумывался в таких случаях о порядке создания контролов.

 

Эмм... А такой момент - есть в среде средства для изменения порядка создания контролов? Или только руками в .fmx файлах править? Или возиться с управлением в рантайм через BringToFront/SendToBack (чего бы не очень хотелось, ибо как я понимаю, - надо будет заморачиваться с учётом родительских лайоутов, панелей и т.п.)

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...