Einzelnen Beitrag anzeigen

AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
245 Beiträge
 
Delphi 12 Athens
 
#1

TTimer unzuverlässig auf neueren Iphones

  Alt 9. Mär 2021, 10:11
Hallo,

ich habe ein seltsames Problem mit Timern auf neueren Iphones bei einer einfachen manuellen Popup-Konstruktion:
Eine Listbox hat ein Mousedown-Ereignis, was einen 500ms-Timer startet, sowie ein MouseUp-Ereignis, was ihn stoppt.
Geht der Timer durch, so wird ein Kontextmenü sichtbar gemacht, kommt das MouseUp vorher, wird der Timer gestoppt und das Ganze als Klick gewertet.

Das Problem ist, dass auf neueren Iphones (11er und 12er Reihe) der Zeitabstand zwischen Drücken und Erscheinen des Kontextmenüs unregelmäßig ist.
Manchmal erscheint es exakt nach 0,5 Sekunden, manchmal erst nach 5 Sekunden.

Kurios ist folgendes: Logge ich MouseDown und das Ende der OnTimer-Methode, so zeigt das Log jedes einzelne Mal einen Zeitabstand von 500 + 10-20 ms zwischen den beiden Punkten, obwohl des Erscheinen des Kontextmenüs teilweise deutlich länger gedauert hat.
Setze ich im OnTimer an diesselbe Stelle wie den Logeintrag eine einfache optische Änderung, so wie etwa das Ändern des Textes einer Schaltfläche, so erfolgt diese zeitgleich mit dem Anzeigen des Kontextmenüs, während das Log wie gehabt die korrekte Zeit anzeigt.

Auf nem Iphone X oder älteren Geräten funktioniert das Ganze ziemlich zuverlässig.
Kompiliert auf Delphi 10.4.1 mit einer 14.3 SDK.

Ich würde mal vermuten, dass das entweder ein optisches Aktualisierungsproblem oder ein Thread-Problem ist.

Hat irgendwer hier auch vergleichbare Timer-Probleme? Ansonsten wäre für mich auch eine alternative Konstruktion eine Lösung, mit der ich den Timer ersetzen könnte, den ich als Komponente sowieso nicht sonderlich mag. Vielleicht einen anonymen Thread mit Wait oder sowas... Hat jemand sich jemand vielleicht schonmal damit auseinandergesetzt?
  Mit Zitat antworten Zitat