AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

[mobile OS] Virtuelle Tastatur verdeckt Controls

Ein Thema von Sherlock · begonnen am 15. Apr 2016 · letzter Beitrag vom 18. Apr 2016
Antwort Antwort
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.161 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

[mobile OS] Virtuelle Tastatur verdeckt Controls

  Alt 15. Apr 2016, 15:38
Wir schreiben 2016 und haben eine Entwicklungsumgebung, die so ausgereift sein soll, daß sie nach einer recht verregneten Stadt benannt wurde. Und was geht nicht "out of the box"? Die Software Tastatur verdeckt unter Umständen das Control in das gerade getippt werden soll. Nun haben sich über die Jahre wohl einige Leute Gedanken gemacht, wie das zu lösen ist. Allerdings sind die Lösungen entweder verschollen, oder schlicht unausgegoren...oder ich bin zu dämlich sie zu finden.
Hier mal die Ansätze die ich bisher gefunden habe, die aber aus dem einen oder anderen Grund nicht wirklich befriedigend sind:

http://docwiki.embarcadero.com/CodeE...e_%28Delphi%29 - das bedingt, daß man die gesamte Applikation in eine ScrollBox setzt, das finde ich...unschön und man sieht sowas eigentlich nicht in der freien Wildbahn ausserdem ist das ein XE5 Sample-Project...gibts da echt seitdem keine neueren Erkentnisse?

http://delphiworlds.com/2013/10/movi...oard-is-shown/ - Das ist für Android mit einem dicken "TODO" versehen, funktioniert also nur unter iOS...und auch da muß ich sagen, daß es nicht wirklich befriedigend ist, da einige Warnungen bezüglich deprecated Functions aufpoppen und im Simulator mal die Tastatur aufgeht mal nicht (häufiger jedoch nicht). Insgesamt ist das aber eine Funktionalität wie ich sie mir vorstelle.

http://www.fmxexpress.com/keep-contr...droid-and-ios/ - das scheint wohl auf obigem zu basieren...aber die Links führen ins Nirwana, wie übrigens so ziemlich alle Embarcadero Links zu diesem Thema, abgesehen von den dokWikis

Hat einer von Euch eventuell eine allgemeingültige Lösung parat? Das muss doch mittlerweile jeder in Verwendung haben, der mobile Applikationen erstellt....denke ich.

Danke und schönes Wochenende,
Sherlock
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Daniel
(Administrator)

Registriert seit: 30. Mai 2002
Ort: Hamburg
14.541 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: [mobile OS] Virtuelle Tastatur verdeckt Controls

  Alt 15. Apr 2016, 15:48
Das ist bis heute Standard-Verhalten auf den mobilen Plattformen - losgelöst von Delphi musst Du eine Scrollbox nutzen und auf die vom System ausgelösten Ereignisse der Tastatur reagieren. Das ist mit Xcode oder den Tools von Google nicht anders.
Eine universelle Lösung könnte nur ein Basis-Container mit einer Scrollbox sein, wenn ich mir aber die kreative Vielfalt der Apps da draußen ansehe, wird es wohl immer zwangsläufig auf individuelle Lösungen hinauslaufen.
Daniel R. Wolf
Admin Delphi-PRAXiS
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.191 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: [mobile OS] Virtuelle Tastatur verdeckt Controls

  Alt 15. Apr 2016, 15:56
Basis bildet eine VertScrollbox mit TAlignLayout.alClient, die als Container für alle Controls dient.
Im Form-Event FormFocusChanged:
Delphi-Quellcode:
procedure TfrmMain.FormFocusChanged(Sender: TObject);
begin
  {$IFDEF IOS}
  UpdateKBBounds;
  {$ENDIF IOS}
end;
UpdateKBounds:
Delphi-Quellcode:
{$IFDEF IOS}
procedure TfrmMain.UpdateKBBounds;
var
  LFocused : TControl;
  LFocusRect: TRectF;
begin
  FNeedOffset := False;
  if Assigned(Focused) then
  begin
    LFocused := TControl(Focused.GetObject);
    LFocusRect := LFocused.AbsoluteRect;
    LFocusRect.Offset(VertScrollBox1.ViewportPosition);
    if (LFocusRect.IntersectsWith(TRectF.Create(FKBBounds))) and
       (LFocusRect.Bottom > FKBBounds.Top) then
    begin
      FNeedOffset := True;
      laMain.Align := TAlignLayout.alHorizontal;
      VertScrollBox1.RealignContent;
      Application.ProcessMessages;
      VertScrollBox1.ViewportPosition :=
        PointF(VertScrollBox1.ViewportPosition.X,
               LFocusRect.Bottom - FKBBounds.Top-15);
    end;
  end;
  if not FNeedOffset then
    RestorePosition;
end;
{$ENDIF ENDIF}
RestorePosition:
Delphi-Quellcode:
{$IFDEF IOS}
procedure TfrmMain.RestorePosition;
begin
  VertScrollBox1.ViewportPosition := PointF(VertScrollBox1.ViewportPosition.X, 0);
  laMain.Align := TAlignLayout.alClient;
  VertScrollBox1.RealignContent;
end;
{$ENDIF ENDIF}
Delphi-Quellcode:
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    {$IFDEF IOS}
    FKBBounds: TRectF;
    FNeedOffset: Boolean;
    procedure CalcContentBoundsProc(Sender: TObject;
                                    var ContentBounds: TRectF);
    procedure RestorePosition;
    procedure UpdateKBBounds;
    function SharedApplication:UIApplication;
    {$ENDIF}
  end;
FormCreate:
Delphi-Quellcode:
procedure TfrmMain.FormCreate(Sender: TObject);
begin
  {$IF Defined(IOS)}
  VertScrollBox1.OnCalcContentBounds := CalcContentBoundsProc;
  {$ENDIF}
end;
und CalcContentBoundsProc:
Delphi-Quellcode:
{$IFDEF IOS}
procedure TfrmMain.CalcContentBoundsProc(Sender: TObject;
                                       var ContentBounds: TRectF);
begin
  if FNeedOffset and (FKBBounds.Top > 0) then
  begin
    ContentBounds.Bottom := Max(ContentBounds.Bottom,
                                2 * ClientHeight - FKBBounds.Top);
  end;
end;
  {$ENDIF}
Quelle ist mir leider nicht mehr bekannt.
Philip
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
698 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: [mobile OS] Virtuelle Tastatur verdeckt Controls

  Alt 15. Apr 2016, 16:05
Ich habe dafür schon vor einigen Wochen eine QC-Eintrag erstellt, da die von dir verlinkte Variante nur so leidlich funktioniert und kaum gepflegt wird: https://quality.embarcadero.com/browse/RSP-12939
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
3.852 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: [mobile OS] Virtuelle Tastatur verdeckt Controls

  Alt 15. Apr 2016, 16:06
Wir schreiben 2016 und haben eine Entwicklungsumgebung, die so ausgereift sein soll, daß sie nach einer recht verregneten Stadt benannt wurde. Und was geht nicht "out of the box"? Die Software Tastatur verdeckt unter Umständen das Control in das gerade getippt werden soll. Nun haben sich über die Jahre wohl einige Leute Gedanken gemacht, wie das zu lösen ist. Allerdings sind die Lösungen entweder verschollen, oder schlicht unausgegoren...oder ich bin zu dämlich sie zu finden.
Hier mal die Ansätze die ich bisher gefunden habe, die aber aus dem einen oder anderen Grund nicht wirklich befriedigend sind:
Interesse daran Beta-Tester für unser (Sir Rufo & Ich) Firemonkey-Development-Kit zu werden?

Grüsse Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.161 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: [mobile OS] Virtuelle Tastatur verdeckt Controls

  Alt 18. Apr 2016, 10:34
Alles klar, danke Euch allen für die Präsentation des Status Quo. Ich versuche das dann entsprechend noch einzubauen. Noch ein kleine Stichelei sei mir bitte genehmigt: Auch der hier gepostete Beispielcode ist nur für iOS, nicht für Android (zumindest laut den Compilerdirektiven, näher habe ich ihn mir nicht angesehen, das kommt jetzt gleich). Außerdem entspricht das eben nicht zu 100% dem iOS Look&Feel (Zum Vergleich: Öffnet mal zB die WLAN-Optionen auf einem 6+ im Querformat. Da bleibt die MultiView für die Auswahl der Einstellungen sichtbar, und scrollt eben nicht weg, wenn man dann auf ein Edit geht, daß für die Tastatur hochgescrollt werden muss. Es wird nur der Detail-Bereich gescrollt.

Mavarik: Vielen Dank für das Angebot! Das hört sich sehr interessant an. Ich muß allerdings diese Woche mein Projekt abschließen, und werde erst danach Zeit haben für entsprechende Tests.

Sherlock
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.191 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

AW: [mobile OS] Virtuelle Tastatur verdeckt Controls

  Alt 18. Apr 2016, 11:07
Noch ein kleine Stichelei sei mir bitte genehmigt: Auch der hier gepostete Beispielcode ist nur für iOS, nicht für Android (zumindest laut den Compilerdirektiven, näher habe ich ihn mir nicht angesehen, das kommt jetzt gleich).
Der Code ist aus einer App die ich nur für iOS anbiete. Läuft aber auch unter Android.
Den ganzen Code sollte man eh mal auslagern, dann könnte man die Einbindung auf einen Event reduzieren...
Philip
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf