среда, 22 января 2014 г.

Управление виртуальной клавиатурой устройства

При разработке Android приложения иногда возникает необходимость отслеживать и изменять состояние клавиатуры устройства. Для этого был добавлен сервис IFMXVirtualKeyboardService.

Внимание! Старая версия заметки более не актуальна, т.к. была написана для Delphi XE5/XE6. Это новая версия заметки, актуальна для Delphi 10.3.* и выше. Если вы всё ещё используете версию Delphi ниже 10.3, то рекомендую обновиться на последнюю версию!

Обновление от 16.11.19.


Методы:
HideVirtualKeyboard – скрыть клавиатуру
ShowVirtualKeyboard – показать клавиатуру

Свойства:
VirtualKeyboardState – отражает текущее состояние клавиатуры

События формы:
OnVirtualKeyboardShown – происходит, когда клавиатура появляется на экране
OnVirtualKeyboardHidden – происходит, когда клавиатура исчезает с экрана


Примеры:

uses
FMX.Platform, FMX.VirtualKeyboard;
// Пример проверки состояния клавиатуры
procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
var
KeyboardService: IFMXVirtualKeyboardService;
begin
if Key = vkHardwareBack then
if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(KeyboardService)) then
if TVirtualKeyBoardState.Visible in KeyboardService.VirtualKeyboardState then
Key := 0
end;
// Пример закрытия клавиатуры
procedure TForm2.sbHideKeyboardClick(Sender: TObject);
var
KeyboardService: IFMXVirtualKeyboardService;
begin
if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(KeyboardService)) then
KeyboardService.HideVirtualKeyboard;
end;
// Пример открытия клавиатуры
procedure TForm2.sbShowKeyboardClick(Sender: TObject);
var
KeyboardService: IFMXVirtualKeyboardService;
begin
if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(KeyboardService)) then
KeyboardService.ShowVirtualKeyboard(Memo1);
end;