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

TWebBrowser показывает две клавиатуры в IOS


Сергей Сергеев

Вопрос

Обнаружил глюк, как исправить - не нашел, по вот этому обсуждению на Embe - похоже он с 15 года..

https://forums.embarcadero.com/thread.jspa?threadID=116534

Выглядит так, взял из примера WebBrowser, прописал в дизайне адрес, к примеру Яндекс,

и запускаю на Ифоне 5 - нажимаю Гоу, при клике на любой ссылке ( например на большой надписи Яндекс в центре), вдруг откдуда не возьмись - появляется клава - английская,

 

 

Спойлер

IMG_0024.thumb.PNG.70db7a40e7c226b50f16224811aef07e.PNG

 

которая Done, ничего никуда не вводит, и не прячется от слова Никак ( с экрана)

дальше - тапаем в поле ввода поиска, вылазит похоже еще одна, уже похоже ФМХ клава - со словом Готово, которая работает..

переключается и по готово - прячется.

 

 

Спойлер

IMG_0025.thumb.PNG.7a9580b73362b5db54897666a6197ab7.PNG

 

 

но после того как Готово спряталась - эта ( от Сафари чтоли ) остается, по Доне не скрывается, и при кликах по ссылкам - прячется и опять вылазит..

 

Спойлер

IMG_0026.thumb.PNG.ed8bd9e5ee73213039116a9270ff1ede.PNG

сделал то что написано в обсуждении, но это прячется только второй ( Доне)ТулБар - клавы две так и висят..

Ничего по теме не нашел, похоже глюк старый, и возможно уже решенный..

пс.  клавиатуры не две все таки, два тул бара, повесил на он хайд, он Шоу обработчики, происходит следующее, по Готово - прячется клава и сразу опять показывается уже без "готово" - с "доне".. она же сразу показывается при клике по ссылке..

 

Изменено пользователем Сергей Сергеев
Ссылка на комментарий

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

  • 0

добавлю, все это в последней, на сегодня Delphi 10.3.2. В то же время, такого не заметил на скомпиленной в 17 г. на Берлине, наверное, - открытие сайтов в отдельной форме и переход по ссылкам, не открывает не нужную клавиатуру.. Если не сложно, у кого Берлин, Сиеттл выложите FMX.VirtualKeyboard.iOS.pas  посравниваю.. Спасибо

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

Коллеги.. я только один это наблюдаю? может кто нибудь подтвердить или опровергнуть этот эффект.. 

воспроизводится просто.. берет из  Samle -Snippet - WebBrowser проект..

image.png.e3b75f00460e966eebc6e6f03fd3ec5f.png

 

запускаете на IOS ( там по умолчанию адрес Embarcadero  нажимаете ссылки на странице, и начинает вылазить клавиатура c Done, которая ничего никуда не вводит, и не закрывается по Done. 

А если есть поле для ввода ( поиск например) , то появляется 2 Бара + еще Готово. И клава все равно не закрывается.

Ссылка на комментарий
  • 0
6 часов назад, Евгений Корепов сказал:

Закиньте сюда тестовый проект, я проверю на своем устройстве.

вот прямо из примера поставки.. 

пс. получается пользоваться TWebBrowser в IOS затруднительно ( если Евгений подтвердит наличие глюка)

WebBrowser.7z

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

Да, легко удалось воспроизвести проблему - набрал yandex.ru, нажал Go (открылась страница), на странице нажал ссылку "Картинки" - появилась клавиатура, которая не получает фокуса, не реагирует на тыканье.

Среда 10.3.2, iPhone SE, iOS 12.3.1

Возможно проблема перекликается с https://quality.embarcadero.com/browse/RSP-25523

Screen Shot 2019-08-24 at 22.18.46.png

Ссылка на комментарий
  • 0
12 часов назад, Евгений Корепов сказал:

которая не получает фокуса,

спасибо за проверку..  и встает вопрос - как с этим жить?

такое впечатление, что клавиатура становится на что то, что определяется как окно ввода, и поэтому появляется, почему не прячется по Done - не понятно..

также, в тексте примера обнаружил  event не подключенный никуда ( понятно, что нужно на кейдаун  поля адреса), и по кнопке возврат на клаве должен передать фокус на кнопку, что по идее прячет фокус

но этот частный случай не решает проблемы выскакивания клавы при хождении по сайту.. 

немного улучщил ситуацию так.. на onShouldLoadStartRequest , поставил активацию таймера, который через 100 мс - делает HideKeyBoard. Помогает, но не всегда.. Событие OnShoKeyBoard возникает при появлении фейковой клавы. Как бы понять , что она не нужна и захлопнуть, но все это пляски.. надо в Emb писать глюк - чтобы правили. Возможно это изза нового SDK Ios - в старой, в скомпиленной в 2017 г. версии в webBrowser такого не заметил. Куда заводить БагТрек, подскажите, или заведите, если не сложно..

Ссылка на комментарий
  • 0
1 час назад, Сергей Сергеев сказал:

спасибо за проверку..  и встает вопрос - как с этим жить?

такое впечатление, что клавиатура становится на что то, что определяется как окно ввода, и поэтому появляется, почему не прячется по Done - не понятно..

также, в тексте примера обнаружил  event не подключенный никуда ( понятно, что нужно на кейдаун  поля адреса), и по кнопке возврат на клаве должен передать фокус на кнопку, что по идее прячет фокус

но этот частный случай не решает проблемы выскакивания клавы при хождении по сайту.. 

немного улучщил ситуацию так.. на onShouldLoadStartRequest , поставил активацию таймера, который через 100 мс - делает HideKeyBoard. Помогает, но не всегда.. Событие OnShoKeyBoard возникает при появлении фейковой клавы. Как бы понять , что она не нужна и захлопнуть, но все это пляски.. надо в Emb писать глюк - чтобы правили. Возможно это изза нового SDK Ios - в старой, в скомпиленной в 2017 г. версии в webBrowser такого не заметил. Куда заводить БагТрек, подскажите, или заведите, если не сложно..

Я в своем сообщении указал способ решения:

https://quality.embarcadero.com/browse/RSP-25523

Там Dave Nottage написал причину и способ исправления:

image.thumb.png.daf0a8db5e626d537db71edade83a397.png

Прикладываю архив с исправленным FMX.Platform.iOS.pas - положите в папку с проектом и все заработает нормально (я проверил).

P.S. Несчастный FMX.Platform.iOS.pas изуродовали в Рио бесчеловечно )) Какой то индус прошелся по нему в наркотическом угаре.

FMX.Platform.iOS.pas.7z

Ссылка на комментарий
  • 0
3 часа назад, Евгений Корепов сказал:

Прикладываю архив с исправленным FMX.Platform.iOS.pas

спасибо - завтра проверю на работе.. как то не провел параллель между тмемо и браузером.. 

 

Ссылка на комментарий
  • 0
3 часа назад, Сергей Сергеев сказал:

спасибо - завтра проверю на работе.. как то не провел параллель между тмемо и браузером.. 

 

Там видимо все контролы ControlType Platform подвержены этому глюку. А Браузер  - это нативный контрол по умолчанию.

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

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

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

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

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

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

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

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

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

  • Похожий контент

    • Автор slav_z
      для GPU (Android и iOS) неверно работает установка цвета при следующих условиях: Rectangle.Fill.Color:=$3CF865F7 и Rectangle.Opacity=0.5 (одновременно установить цвет элемента с альфа-каналом < $FF и прозрачностью элемента < 1).
      Это может понадобиться, к примеру, для анимации "исчезающего" элемента. Ошибке много лет... исправляется внесением изменений в исходный код модуля FMX.Canvas.GPU.pas (необходимо скопировать модуль FMX.Canvas.GPU.pas к себе в проект и внести изменения ).
      Оригинальный код:

      Исправленный код:

    • Автор A_l_ex
      Уважаемые форумчане, искал на форуме, но возможно не нашел что-то похожее по своему вопросу ... 
      Нужна возможность использовать жесты в TWebBrowser. Стандартные жесты в FMX как я понял не работают, TWebBrowser очевидно благополучно игнорирует их.
      Читая API на developer.apple.com нашел то что нужно setAllowsBackForwardNavigationGestures. Данное действо доступно в модуле iOSapi.WebKit. 
      Как заставить TWebBrowser на форме выполнять это требование? 
      В попытках найти решение пытался выполнить такое извращение, явно осознавая что это не совсем то что нужно: 
      На форуме нашел такой запрос но он за 2014 год и проблема в том что мне нужно не создавать свой WebView а попытаться заставить родной TWebBrowser делать это. Но если это не возможно то прошу подсказать как воткнуть на форму свой WebView.
      Читал что есть возможность использовать Deligate но как именно это делать, пока не понятно.
      Буду рад любым вариантам!
      P.S. Забыл упомянуть. Студия разработки RAD Studio 10.4.2 Sydney. Аппаратура MacBook Pro 13 Big Sur 11.2.3 + XCode 12.5 + Apple iPhone 11(14.5).
    • Автор slav_z
      Все разработчики при работе с FMX рано или поздно сталкиваются с одной и той же проблемой: необходимо исключить "случайное" срабатывание нажатий элементов внутри скроллбокса во время его скроллинга. Идут годы, а решения так и нет. Давайте попробуем это исправить. Поехали!
      Запускаем IDE, создаем новый проект, кидаем на форму TVertScrollBox и на него чего-нибудь побольше... запускаем на мобильном устройстве, пытаемся скроллировать,

      получаем проблемы в виде срабатывания разных событий типа OnClick элементов.
      Решение состоит в том, чтобы сделать элементы "невидимыми" для событий связанных с действиями пользователя с экраном во время скроллинга.
      Делаем следующее:

      Все. Переносим код в базовую форму, делаем его более гибким, убираем все те костыли, которые мы уже успели сделать ранее...
      Удачи!
      https://github.com/slav-libx/scroll-click.git
    • Автор Yarpda
      Добрый день всем!
      Стоит задача сделать информационный киоск (управлений только через тачскрин) под управлением Windows. Фактически нужно на экран вывести сайт компании, но проблема в том что управление должно быть таким же как в мобильных устройствах.
      Т.е. реакция на касание как Pan (прокрутка). Если же собирать проект под винду, то при нажатии на экран и движении пальца прокрутка страницы в браузере не происходит, а происходит выделение текста на станице, а нужно максимально сделать как на мобильных платформах. Посмотрел настройки TWebBrowser и на VCL и на FMX, но ничего похоже не нашел, чтобы позволило так сделать. Если у кого-то была такая практика, или хотя бы знаете как это можно реализовать (желательно наиболее просто), прошу подсказки.
    • Автор Martifan
      Привет,
      подскажите как можно реализовать авторизацию с помощью Apple ID? любые идеи.
      заранее спасибо
    • Автор Eric Myval
      Добрый день! Я собрал приложение и подготовил IPA файл, заполнил всю информацию, прикрепил все иконки. Когда загружаю приложение в App Store Connect и пытаюсь отправить на проверку, мне выдают следую ошибку:
      В каталог объектов Xcode необходимо добавить значок приложения с разрешение 1024х1024.
      Как это сделать? Уже всю голову сломал... 
       
      Использую Rad Studio 10.3.3 + PAServer 20 + самый свежий Xcode и последняя обнова на маке
      Пробовал и Rad Studio 10.4 + PAServer 21, аналогичная проблема
      Остальные ошибки не важны, их решить легко. Интересен только последний пункт. 

    • Автор Igor Aleksiyuk
      У кого нибудь вышло это сделать
    • Автор Martifan
      здравствуйте, я пытаюсь сделать push уведомление на iOS делаю следующим образом:
      unit Unit1; interface uses   System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,   FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,   System.PushNotification, FMX.Controls.Presentation, FMX.StdCtrls,   FMX.PushNotification.iOS, FMX.ScrollBox, FMX.Memo; type   TForm1 = class(TForm)     Button1: TButton;     Memo1: TMemo;     procedure Button1Click(Sender: TObject);   private     { Private declarations }     FDeviceID: string;     FDeviceToken: string;     FPushService: TPushService;     FPushServiceConnection: TPushServiceConnection;     procedure OnReceiveNotificationEvent(Sender: TObject;        const ANotification: TPushServiceNotification);     procedure OnServiceConnectionChange(Sender: TObject;        AChange: TPushService.TChanges);   public     { Public declarations }   end; var   Form1: TForm1; implementation {$R *.fmx} procedure TForm1.Button1Click(Sender: TObject); begin   FPushService := Nil;   FPushServiceConnection := Nil;   FPushService := TPushServiceManager.Instance.GetServiceByName(TPushService.TServiceNames.APS);   if Assigned(FPushService) then     begin       FPushServiceConnection := TPushServiceConnection.Create(FPushService);       FPushServiceConnection.OnReceiveNotification := OnReceiveNotificationEvent;       FPushServiceConnection.OnChange := OnServiceConnectionChange;       FPushServiceConnection.Active := True;     end else     Begin       ShowMessage('False');     End; end; procedure TForm1.OnReceiveNotificationEvent(Sender: TObject;   const ANotification: TPushServiceNotification); begin //  ShowMessage('OnReceiveNotificationEvent'); end; procedure TForm1.OnServiceConnectionChange(Sender: TObject;   AChange: TPushService.TChanges); begin   Memo1.Lines.Clear;   if (TPushService.TChange.DeviceToken in AChange) and        Assigned(FPushServiceConnection) then      begin        FDeviceID := FPushService.DeviceIDValue[TPushService.TDeviceIDNames.DeviceID];        FDeviceToken := FPushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken];        // save token and ID to  remote db here        Memo1.Lines.Add('DeviceID: '+FDeviceID);        Memo1.Lines.Add('DeviceToken: '+FDeviceToken);      end; end; end. все проходит нормально но получаю значение FDeviceID а значение FDeviceToken пустой все сертификаты установлены правильно и соответственно указана все правильно как я говорил перемен FDeviceID получает значение а
      FDeviceToken возвращается пустым на форумах тоже видел такую проблему но может кто то решал эту проблему?
      поделитесь пожалуйста
      заранее спасибо 
    • Автор Эрик Шакиров
      Подскажите пожалуйста, возможно ли сделать выбор файла в IOS. Например, также как в Android 
    • Автор Eric Myval
      Сегодня начал разбираться с компиляцией под Mac и под iOS и сразу столкнулся с проблемами. Использую Rad Studio 10.3.3, Mac Mini 10.15.1, Windows 10. PAServer20.0, Xcode 11.2.1 Выдает следующую ошибку на всех платформах, как iOS, так и iOS Simulator, macOS32 - 
      Unable to launch process on '192.168.8.182' using the parameters from the 'MacMini' profile. The following error was returned: 'Unable to create process: /Applications/PAServer-20.0.app/Contents/MacOS/dbkosx_26_0 Получается собрать проект только в macOS64, но! Приложения запускаются, работают, но после их закрытия в отладке, пишет, что ПО устаревшие и кидает ссылку на переход с 32 на 64. Но как так? Оно же собрано на 64х))) В общем, полный тупик и убил весь день. Есть идеи? 
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...