Search code examples
iosdelphiuitextfieldfiremonkeyuikeyboard

IOS how to hide the top bar (with done button) on the top of the keyboard?


I have an UITextField, and when the keyboard is show, their is on the top on it a bar with a "done" button.

enter image description here

This done button is totally useless, first it's duplicate the done button already present in the keyboard and second it's not fire the event ShouldReturn making hard to trap any action with it.

also i see this button on my iphone 5 + ios 9 but i not seeing it on my ipad pro + ios 10

I m using delphi, i don't know if it's matter (other app on my iphone 5 not made with delphi don't have this "done" bar so maybe yes)


Solution

  • OK, i found the problem. i was suspicious when i saw that the caption of the button (done) not change on french iphone. apple will not do such horrible mistake, but it's typically what can do the emb team :( And yes this bar is made by delphi ! don't ask me why they do a such horrible think by default, but they did ... and it's was not showing in the ipad because :

    procedure TCocoaVirtualKeyboardService.ApplicationEventHandler(const Sender: TObject; const M: TMessage);
    begin
      if (M is TApplicationEventMessage) and ((M as TApplicationEventMessage).Value.Event = TApplicationEvent.FinishedLaunching) then
      begin
        FToolbarEnabled := not IsPad;
        FHideButtonVisible := FToolbarEnabled;
      end;
    end;
    

    really great nawak :(

    so you can disable the toolbar by doing :

    if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardToolbarService, aVirtualKeyboardToolbarService) then aVirtualKeyboardToolbarService.SetToolbarEnabled(False);
    

    completely idiot to make this useless and ugly toolbar enabled by default :(