【Android】バーチャルキーボードのShown/Hideイベントが発生しない

解決


のぶ  2021-10-19 06:46:19  No: 149887  IP: 192.*.*.*

DelphiでAndroidアプリを開発しております。
問題現象の手順を行うとバーチャルキーボードの
ShownおよびHideイベントが正しく発生しません。
TMemoのControlTypeをPlatFormまたはStyledの何れに変更しても同じです。
原因は分かりますでしょうか?Delphi10でも同じ現象でした。
ちなみにiOSのほうは全く問題がありませんでした。

補足)
手順②のログが消える症状は何か別の不具合に思います。
イベントの問題が解消されることを優先したいため、
今回は無視していただいてかまいません。

【バージョン】
RAD Studio 11 Alexandria
Embarcadero® Delphi 11.0 バージョン 28.0.42600.6491


<問題現象の手順>

①メモをタップし、バーチャルキーボードを表示する
 ・Shownイベントは発生する。
 ・メモに正しくログが追記される。

②バーチャルキーボードを閉じる。
 ・Hideイベントは発生しない。
 ・メモにログが入力されず、①のログが消える。

③メモをタップし、バーチャルキーボードを表示する
 ・Shownイベントは発生しない。
 ・メモにログも入力されない。

④バーチャルキーボードを閉じる
 ・Hideイベントは発生する。
 ・メモに正しくログが追記される。

以降、繰り返し同じ現象。


<サンプルソース>
unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Memo.Types,
  FMX.Controls.Presentation, FMX.ScrollBox, FMX.Memo, FMX.Objects, FMX.Layouts,
  FMX.StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormVirtualKeyboardHidden(Sender: TObject;
      KeyboardVisible: Boolean; const Bounds: TRect);
    procedure FormVirtualKeyboardShown(Sender: TObject;
      KeyboardVisible: Boolean; const Bounds: TRect);
  private
    { private 宣言 }
  public
    { public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.FormVirtualKeyboardHidden(Sender: TObject;
  KeyboardVisible: Boolean; const Bounds: TRect);
begin
  Memo1.Lines.Add('FormVirtualKeyboardHidden');
end;

procedure TForm1.FormVirtualKeyboardShown(Sender: TObject;
  KeyboardVisible: Boolean; const Bounds: TRect);
begin
  Memo1.Lines.Add('FormVirtualKeyboardShown');
end;

end.

編集 削除
のぶ  2021-10-22 04:38:59  No: 149890  IP: 192.*.*.*

開発検証用のタブレット特有の問題かもしれません。
比較的新しいAndroidスマホ(oppo reno5 a、Android11)では
正しくShownおよびHiddenイベントが発生しました。
本件CLOSEにしたいと思います。

<問題のタブレット機種>
モデル名: NEC PC-TE410JAW
Androidバージョン: 9
※本タブレットはこれ以上バージョンをあげれませんでした。

編集 削除
のぶ  2021-10-22 08:27:52  No: 149893  IP: 192.*.*.*

追記です。

富士ソフト株式会社の「FSKAREN」という日本語入力システム(IME)が問題だったようです。
Googleの「Gboard」に変更したら、問題は起きませんでした。

編集 削除