Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   iOS9 Erkennen ob Maus (Touch) ist gedrückt (https://www.delphipraxis.net/187632-ios9-erkennen-ob-maus-touch-ist-gedrueckt.html)

Rollo62 16. Dez 2015 15:01

iOS9 Erkennen ob Maus (Touch) ist gedrückt
 
Hallo zusammen,

ich habe im Moment ein Problem mit MouseEvents,
welche doppelte, mehrfache OnMouseUp Events feuert bei einen kontinuierlichem Ziehen mit dem Finger auf einem Image.

Dehalb möchte ich Folgendes versuchen:

- im OnMouseUp Event checken ob noch ein Touch drauf ist oder nicht,
in der Hoffnung das dann wieder synchron zu bekommen.

Wohlgemerkt: unter Android, OSX, Win32 läuft alles prima mit den Events, nur iOS9 zickt wie üblich.

Ich sehe in den Fmx Soucen das die MouseUp/Move/Down Events aus den touchesBegan, touchesMove etc. von iOS
generiert werden.
Dabei werden wohl an vershciedenen Stellen MouseUp gefeuert (z.B. habe ich den OnLongTap als Übeltäter im Verdacht).

Wie auch immer:

Ich möchte versuchen de momentane Anzahl an Touches (ein Finger der sich wie eine mbLeft Mouse verhalten soll)
auszulesen, also wie eine Art "IsMousePressed" auf dem Phone.

Dazu habe ich gefunden wie man Tasten unter MacApi abfragt, leider gibt es das nicht unter iOS

http://stackoverflow.com/questions/1...-in-firemonkey
https://developer.apple.com/library/...occ/cl/NSEvent
http://codeverge.com/embarcadero.del...de-for/1040349


So werden die Touches unter iOS behandelt.
https://developer.apple.com/library/...ackground.html
http://www.cromis.net/blog/2014/02/t...or-delphi-xe5/

Hat vielleicht jemand eine Idee wie ein "IsMousePressed" oder "GetTouchesCount" schnell und einfach abzufragen wäre, als Workaround ?


Rollo

(Rx10 ohne Upd1, XCode 7.1, Win8.1, VmWare Fusion 8.1)

Rollo62 17. Dez 2015 06:56

AW: iOS9 Erkennen ob Maus (Touch) ist gedrückt
 
Das Problem hängt wohl damit zusammen das nach kurzer Zeit (ca. 0.5 sec.) ein
touchesCanceled vom iOS gesendet wird, wenn der Finger auf derselben Stelle bleibt.

Dies wird dann als MouseUp an die Forms etc. gesendet.

Also wenn der Finger bewegt wird ist alles OK, aber wenn man Finger drückt und hält dann kommt
solche ein falscher Event.

Dazu kommt noch das in FMX.Platform.iOS das touchesCancelled in Touches.Up uminterpretiert wird, so das man
keine Chance hat das überhaupt zu analysieren.
Damit ist dann aber die ursprüngliche Funktion gecancelled, weil man nicht weiss woher das MouseUp kommt.

Da habe ich mir gerade das FMX.Platform.iOS vorgenommen, aber ich hoffe noch das es einen einfacheren Weg gibt
um das abzustellen.

Wenn das mit LongTap o.ä. zusammenhängt, gibt es eine Möglichkeit das in iOS abzuschalten ?
Oder hat jemand eine andere Idee wie man das lösen kann ?

Rollo


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:34 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