Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   iOS Done Button in VirtualKeyboard unter iOS keine Funktion (https://www.delphipraxis.net/206658-done-button-virtualkeyboard-unter-ios-keine-funktion.html)

OlliWW 15. Jan 2021 20:42

Done Button in VirtualKeyboard unter iOS keine Funktion
 
Hallo,

Ich habe auf meiner FMX / iOS Form ein TListView liegen.
Dieses habe ich auf ControlType "Platform" stehen - damit ist die Performance wesentlich besser und auch der LookandFeel ist näher an iOS nativ.
Dann habe ich SearchVisible ebenfalls auf True gesetzt, damit ich meine ListView durchsuchen kann.
Es klappt auch ganz wunderbar, jedoch wenn ich in die SearchBox klickt und ein Suchwort eingebe und das virtual Keyboard mit dem "Fertig" Button (oben über der Tastatur) beenden möchte hat dieser Button keine Funktion.

Nehme ich das "Styled" Control, funktioniert alles wie erwartet.

Gibt es hier noch einen Trick? Kann ich das Klick-Event auf den Fertig-Button abfangen und ggf. selbst einen Hide Befehl für das Keyboard senden?

TurboMagic 15. Jan 2021 21:49

AW: Done Button in VirtualKeyboard unter iOS keine Funktion
 
Ich glaube mich zu erinnern, dass das eine Einschränkung der nativen Controls ist. Kann aber auch falsch liegen. Schon Mal EMBTs DocWiki danach durchsucht?

OlliWW 16. Jan 2021 09:01

AW: Done Button in VirtualKeyboard unter iOS keine Funktion
 
Hallo,

Ja ich habe das Wiki schon durchsucht aber noch nicht wirklich viel gefunden. Ich würde mir auch selbst einen Event Handler dafür schreiben, aber habe dafür auch keinen Einsatz gefunden der funktioniert.

Das ist nun die erste iOS App die ich mit Delphi schreibe, leider bin ich wegen solchen Sachen direkt schon sehr frustriert und enttäuscht. Der Ansatz mit Firemonkey und iOS ist ja super, aber andauerend stoße ich an solche halb-fertigen Stellen in FMX / iOS.

QuickAndDirty 19. Jan 2021 11:56

AW: Done Button in VirtualKeyboard unter iOS keine Funktion
 
Ich glaube Done/Fertig/Suchen liefert den virtual key für enter oder eben den char #13.
Ich frage das immer Keydown ab.
Heißt das, wenn ich das Control auf "Styled" stelle muss ich das ereignis nicht abfragen?

OlliWW 19. Jan 2021 12:54

AW: Done Button in VirtualKeyboard unter iOS keine Funktion
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1481182)
Heißt das, wenn ich das Control auf "Styled" stelle muss ich das ereignis nicht abfragen?

Ja das Verhalten zwischen "styled" und "platform" ist im ListView in der Searchbox unterschiedlich:

Styled:
- Searchbox Visible
- Mit dem Finger in die Searchbox tippen (nichts eingeben)
- "Fertig" antippen
=> Tastatur verschwindet

Platform:
- Searchbox Visible
- Mit dem Finger in die Searchbox tippen (nichts eingeben)
- "Fertig" antippen
=> Tastatur verschwindet nicht

Mit der Einstellung "Platform" ist der einzige weg das Keyboard verschwinden zu lassen: Etwas in die Searchbox eintippen und auf Enter (Suchen Icon) unten in der Tastatur drücken.

Das mit dem Char13 ist eine interessante Sache. Da "Enter" nicht aktiv ist, solange nichts in die Searchbox eingegeben ist, könnte es auch damit zusammen hängen. Wenn Fertig nur auf "Enter" verweist und Enter inaktiv ist, könnte es sein, dass es dehalb nicht funktioniert, dem werde ich mal nachgehen.

So oder so ist es ein Fehler. Entweder darf der Button gar nicht da sein, oder er soll funktionieren. Aber ein "Fertig" Button ohne Funktion erscheint mir nach einem Fehler.

Ich habe das Ganze mit einem Beispiel an Embarcadero gemeldet...wird dann sicherlich in Delphi 17.3 gefixt werden :roll:

https://quality.embarcadero.com/brow...2182?filter=-2

Kannst du mir mal den Code geben mit dem du die Tastatur verschwinden lässt? Ich konnte das Event "Fertig" auch abfangen, aber ich konnte die Tastatur egal wie nicht verschwinden lassen. Entweder passierte nichts oder Zugriffsverletzungen.
Abgefangen habe ich den "fertig" klick mit:
https://stackoverflow.com/questions/...of-done-button

himitsu 19. Jan 2021 13:01

AW: Done Button in VirtualKeyboard unter iOS keine Funktion
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1481182)
Ich glaube Done/Fertig/Suchen liefert den virtual key für enter oder eben den char #13.

Jupp, im Grunde ist das alles der selbe Enter-Knopf, aber je nach Kontext/Land mit einem anderen Aufdruck.

OlliWW 19. Jan 2021 13:04

AW: Done Button in VirtualKeyboard unter iOS keine Funktion
 
Zitat:

Zitat von himitsu (Beitrag 1481192)
Zitat:

Zitat von QuickAndDirty (Beitrag 1481182)
Ich glaube Done/Fertig/Suchen liefert den virtual key für enter oder eben den char #13.

Jupp, im Grunde ist das alles der selbe Enter-Knopf, aber je nach Kontext/Land mit einem anderen Aufdruck.

Auch der "Fertig (Done)" Butten in der Toolleiste über der Tastatur?

QuickAndDirty 19. Jan 2021 14:42

AW: Done Button in VirtualKeyboard unter iOS keine Funktion
 
Zitat:

Zitat von OlliWW (Beitrag 1481194)
Zitat:

Zitat von himitsu (Beitrag 1481192)
Zitat:

Zitat von QuickAndDirty (Beitrag 1481182)
Ich glaube Done/Fertig/Suchen liefert den virtual key für enter oder eben den char #13.

Jupp, im Grunde ist das alles der selbe Enter-Knopf, aber je nach Kontext/Land mit einem anderen Aufdruck.

Auch der "Fertig (Done)" Butten in der Toolleiste über der Tastatur?

Der "Button" oder eben "Key" der nur sichtbar ist wenn das Virtual Keybord sichtbar ist ... bey swiftkey glaube ich unten rechts bei anderen oben rechts aber noch als teil des Virtual keyboards.

himitsu 19. Jan 2021 18:20

AW: Done Button in VirtualKeyboard unter iOS keine Funktion
 
Es kommt drauf an, bei Android gibt es auch manchmal so einen "schließen" Knopf (oder ganz unten auf Zurück),
aber der blendet doch einfach nur die Tastatur aus und sendet keine "Taste". Wofür es doch irgendwo die Events gibt, wenn die Tastatur ein-/ausgeblendet wird.

OlliWW 22. Jan 2021 09:40

AW: Done Button in VirtualKeyboard unter iOS keine Funktion
 
Ich habe mir nun einen Workarround gebastelt:
Der "Fertig" Button löst bei mir jedenfalls kein VK_Return aus. Ich habe mir den Eventhandler aus diesem Beitrag genommen:
https://stackoverflow.com/questions/...of-done-button

Das Event registriere ich im Create von TListView (=> FMX.ListView.iOS.pas). Dort habe ich eine Methode geschrieben die bei dem Event FSearchbar.resignFirstResponder aufruft (aber achtung: Muss aus dem UI Thread passieren).

Damit funktioniert es für mich soweit erstmal.

Was mich allerdings sehr stört ist, dass ich dafür die Sourcen von VirtualKeyboard und ListView in meinem Projekt mit übernehmen musste.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz