Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Klavyeyi Gizleme
#1
Merhaba,

FMX Mobil tarafta, klavyeyi gizlemek için çok fazlaca örnek var fakat çoğu doğru çalışmıyor. (ios)

Delphi tarafında aşağıdaki kod ile bu işlem basit olarak yapılabildiği yazıyor, fakat bende çalışmıyor. Konuyla ilgili bilgisi olan var mı acaba.

VKAutoShowMode := TVKAutoShowMode.Never;

Teşekkürler.
Cevapla
#2
(14-01-2019, Saat: 16:16)pro_imaj Adlı Kullanıcıdan Alıntı: Merhaba,

FMX Mobil tarafta, klavyeyi gizlemek için çok fazlaca örnek var fakat çoğu doğru çalışmıyor. (ios)

Delphi tarafında aşağıdaki kod ile bu işlem basit olarak yapılabildiği yazıyor, fakat bende çalışmıyor. Konuyla ilgili bilgisi olan var mı acaba.

VKAutoShowMode := TVKAutoShowMode.Never;

Teşekkürler.

Aşağıdaki Kodu Android de kullanıyorum sorunsuz çalışıyor.. IOS da denemedim.
(Memo ya dikkat)


procedure Turun.Button1Click(Sender: TObject);
{$IFDEF ANDROID}
var
 FService: IFMXVirtualKeyboardService;
{$ENDIF}
begin
{$IFDEF ANDROID}
 TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(FService));
 if (FService <> nil) and (FMX.Types.TVirtualKeyboardState.Visible in FService.VirtualKeyBoardState) then
 begin
   FService.HideVirtualKeyboard;
   Exit;
 end
 else
   FService.ShowVirtualKeyboard(Memo1);
{$ENDIF}
end;
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#3
(15-01-2019, Saat: 02:05)mcuyan Adlı Kullanıcıdan Alıntı:
(14-01-2019, Saat: 16:16)pro_imaj Adlı Kullanıcıdan Alıntı: Merhaba,

FMX Mobil tarafta, klavyeyi gizlemek için çok fazlaca örnek var fakat çoğu doğru çalışmıyor. (ios)

Delphi tarafında aşağıdaki kod ile bu işlem basit olarak yapılabildiği yazıyor, fakat bende çalışmıyor. Konuyla ilgili bilgisi olan var mı acaba.

VKAutoShowMode := TVKAutoShowMode.Never;

Teşekkürler.

Aşağıdaki Kodu Android de kullanıyorum sorunsuz çalışıyor.. IOS da denemedim.
(Memo ya dikkat)


procedure Turun.Button1Click(Sender: TObject);
{$IFDEF ANDROID}
var
 FService: IFMXVirtualKeyboardService;
{$ENDIF}
begin
{$IFDEF ANDROID}
 TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(FService));
 if (FService <> nil) and (FMX.Types.TVirtualKeyboardState.Visible in FService.VirtualKeyBoardState) then
 begin
   FService.HideVirtualKeyboard;
   Exit;
 end
 else
   FService.ShowVirtualKeyboard(Memo1);
{$ENDIF}
end;

İlgili şartları sağlamadığı için if bloğuna giremiyor iphone tarafına debug yapamadığım için gözlemleyemedim, aşağıdaki kodu klavye açıkken çalıştırdığımda ise kapama işlemiyle access violation hatasını alıyorum, try except ile geçilebilir belki ama yanlış bir yol oluyor.

FService.HideVirtualKeyboard;
Cevapla
#4
Bilmiyordum gördünüz mü ama burada IOS için bir çözüm sunulmuş. Belki işinize yarayabilir.
There's no place like 127.0.0.1
WWW
Cevapla
#5
(15-01-2019, Saat: 09:33)pro_imaj Adlı Kullanıcıdan Alıntı:
(15-01-2019, Saat: 02:05)mcuyan Adlı Kullanıcıdan Alıntı: Aşağıdaki Kodu Android de kullanıyorum sorunsuz çalışıyor.. IOS da denemedim.
(Memo ya dikkat)


procedure Turun.Button1Click(Sender: TObject);
{$IFDEF ANDROID}
var
 FService: IFMXVirtualKeyboardService;
{$ENDIF}
begin
{$IFDEF ANDROID}
 TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(FService));
 if (FService <> nil) and (FMX.Types.TVirtualKeyboardState.Visible in FService.VirtualKeyBoardState) then
 begin
   FService.HideVirtualKeyboard;
   Exit;
 end
 else
   FService.ShowVirtualKeyboard(Memo1);
{$ENDIF}
end;

İlgili şartları sağlamadığı için if bloğuna giremiyor iphone tarafına debug yapamadığım için gözlemleyemedim, aşağıdaki kodu klavye açıkken çalıştırdığımda ise kapama işlemiyle access violation hatasını alıyorum, try except ile geçilebilir belki ama yanlış bir yol oluyor.

FService.HideVirtualKeyboard;

Merhaba,
FMX.VirtualKeyboard.iOS kütüphanesinde aşağıdaki metodlar yer alıyor.
type
  IKeyboardEvents = interface(NSObject)
  ['{72D3A7FD-DDE3-473D-9750-46C072E7B3B7}']
    { Keyboard notifications }
    procedure KeyboardWillShow(notification: Pointer); cdecl;
    procedure KeyboardWillHide(notification: Pointer); cdecl;
    procedure KeyboardDidHide(notification: Pointer); cdecl;
    procedure KeyboardWillChangeFrame(notification: Pointer); cdecl;
    procedure KeyboardDidChangeFrame(notification: Pointer); cdecl;
    { Actions }
    procedure HideVirtualKeyboard; cdecl;
    procedure CustomButtonAction(sender: Pointer); cdecl;
  end;

  TKeyboardEventHandler = class(TOCLocal)
  strict private type
    TKeyboardState = (Shown, Hidden);
  private
    FKeepFocus: Boolean;
    { Keyborad Notifications }
    procedure SendNotificationAboutKeyboardEvent(const AVKRect: TRect; AKeyboardState :TKeyboardState);
    function GetKeyboardRect(Notification: Pointer): TRect;
    function GetKeyboardFrame(Notification: Pointer): NSRect;
    function InvertFrame(const AFrame: NSRect): NSRect;
  protected
    { TOCLocal }
    function GetObjectiveCClass: PTypeInfo; override;
  public
    { IKeyboardEvents }
    procedure KeyboardWillShow(notification: Pointer); cdecl;
    procedure KeyboardWillHide(notification: Pointer); cdecl;
    procedure KeyboardDidHide(notification: Pointer); cdecl;
    procedure KeyboardWillChangeFrame(notification: Pointer); cdecl;
    procedure KeyboardDidChangeFrame(notification: Pointer); cdecl;
    procedure HideVirtualKeyboard; cdecl;
    procedure CustomButtonAction(sender: Pointer); cdecl;
  end;
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#6
(15-01-2019, Saat: 09:44)SimaWB Adlı Kullanıcıdan Alıntı: Bilmiyordum gördünüz mü ama burada IOS için bir çözüm sunulmuş. Belki işinize yarayabilir.

Bu çözümü gördüm hocam, 4 yöntemden 3'nü uyguladığımda çalışmıyor İlk mesajımdaki kodda buradan ilerliyorum. Diğerini neden uygulamadığıma gelince daha kolay bir yolu olmalı diye araştıryorum. embarcadero support kısmında Delphi sürümleriyle ilgili farklılıktan bahsetmişler eski sürümlerde sorunsuz olduğunu bahsetmişler (o linki bulamadım şimdi.)

*Mantık olarak bir butona setfocus olduğunda kapanmalı diye düşünüyor ama onda da işe yaramıyor.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Alt Menü Gizleme gonulali 7 472 09-02-2019, Saat: 14:26
Son Yorum: Mr.Developer



Konuyu Okuyanlar: 1 Ziyaretçi