Delphi Xe7 Android:即使插入了物理键盘,如何显示VK

时间:2015-04-16 08:07:50

标签: android delphi keyboard

显然,基础FMX库已经这样做,因为它“知道”何时显示虚拟键盘以及何时隐藏它。

我的问题是我正在将RFID标签阅读器(OTG设备)插入Android,Android正在“看到”它作为物理键盘。这意味着一旦插入RFID标签阅读器,虚拟键盘就不会出现!

我做的是设置

VKAutoShowMode := TVKAutoShowMode.Never; // inside project.dpr

然后在

TfrmMain.TEdit1CanFocus(Sender: TObject; var ACanFocus: Boolean);
begin
  ShowVirtualKeyBoard(TfmxObject(Sender));
end;

这很好,VK在Edit1获得焦点时显示。但现在,如何在不再需要时隐藏键盘?

如果我使用Edit1OnExit,VK会在VK显示之后隐藏(因为显示键盘实际上会使焦点远离编辑)。

procedure TfrmMain.Edit1Exit(Sender: TObject);
begin
  HideVirtualKeyBoard;
end;

最终,解决方案是再增加一个VKAutoShowMode选项:

VKAutoShowMode := TVKAutoShowMode.Anyways;

但我不能等到有人决定参与此活动(Android 6.0?)

有没有人更好地了解如何插入物理键盘即可实现VK自动化?

procedure ShowVirtualKeyboard(Control: TFmxObject);
var
  FService: IFMXVirtualKeyboardService;
begin
  TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(FService));
  if (FService <> nil) then
  begin
    if not (TVirtualKeyBoardState.Visible in FService.VirtualKeyBoardState) then
      FService.ShowVirtualKeyboard(Control);
  end;
end;

0 个答案:

没有答案