[solved] Probleme mit touchesBegan/touchesEnded

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Macoun 2019 - Frühbucherrabatt bis 26.7.2019

  • [solved] Probleme mit touchesBegan/touchesEnded

    Hallo,

    ich stelle mit OpenGL auf dem iPhone eigene Buttons dar und möchte, dass diese durch Touches des Anwenders anwählbar sind.

    Grundsätzlich funktioniert dies soweit erstmal.

    Allerdings habe ich das Problem, dass ein Touch nie beendet wird. Sprich der Benutzer berührt kurz einen Button, das Berührereignis für diesen Button tritt aber ständig auf bis erneut an eine andere Stelle des Bildschirmes geklickt wird. Soweit ich das nachvollziehen kann wird erst dann ein touchesEnded-Ereignis geliefert ansonsten ständig touchesBegan-Ereignisse auch wenn der Bildschirm nur einmal berührt wurde.

    Muss ich hier irgendwie den Ereignis-Buffer manuell löschen oder selber ein touchesEnded-Ereignis auslösen? ?(

    Wer kann mir helfen? Danke schon im Voraus!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von RA/pdx ()

  • Mac & i Test Abo
  • Der gesamte Source ist leider viel zu groß zum Einstellen, hier mal ein Ausschnitt der Implementierung:

    Quellcode

    1. - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    2. UITouch *t = [[touches allObjects] objectAtIndex:0];
    3. CGPoint touchPos = [t locationInView:t.view];
    4. gui.InjectMousePosition(touchPos.y, fabs(touchPos.x-320));
    5. gui.InjectMouseButtonLeft(true);
    6. }
    7. - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    8. gui.InjectMouseButtonLeft(false);
    9. }
    10. - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
    11. gui.InjectMouseButtonLeft(false);
    12. }
    Alles anzeigen
  • Jerikooh schrieb:

    Wie hast Du denn die Methoden touchesBegan: und touchesEnded: implementiert?

    developer.apple.com/iphone/lib…c/uid/TP40007072-CH9-SW15

    An den Methoden ist nicht viel zu erkennen. Was ist gui? gui.InjectMouseButtonLeft(true); ist kein Objective-C konformer Methodenaufruf. Der Code hilft mir nicht weiter.

    Du kannst ja mal einen Breakpoint in touchesBegan:withEvent: setzen, vielleicht bekommst Du so heraus, von wo die Methode aufgerufen wird.
    „Meine Komplikation hatte eine Komplikation.“
  • macmoonshine schrieb:

    Jerikooh schrieb:

    Wie hast Du denn die Methoden touchesBegan: und touchesEnded: implementiert?

    developer.apple.com/iphone/lib…c/uid/TP40007072-CH9-SW15

    An den Methoden ist nicht viel zu erkennen. Was ist gui? gui.InjectMouseButtonLeft(true); ist kein Objective-C konformer Methodenaufruf. Der Code hilft mir nicht weiter.

    Du kannst ja mal einen Breakpoint in touchesBegan:withEvent: setzen, vielleicht bekommst Du so heraus, von wo die Methode aufgerufen wird.
    gui.InjectMouseButtonLeft(true) ist ein Aufruf meiner eigenen C++ Bibliothek.

    Wie gesagt das Problem ist, das touchesBegan einfach unendlich oft aufgerufen wird.

    Danke für den Link, den hatte ich mir aber gestern schon durchgelesen und hat mich leider nicht wirklich weitergebracht. :(

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von RA/pdx ()

  • Wie bereits geschrieben, entweder Du baust ein Minimal-Projekt und lädst es hoch oder Du greifst selbst zum Debugger. Ich glaube nicht, dass es an Deiner C++-Lib oder der Implementierung der Touch-Methoden liegt, außer Du hast da eine Rekursion drin, womit wir wieder beim Thema Debugger sind.

    RA/pdx schrieb:

    Wie gesagt das Problem ist, dasd touchesBegan einfach unendlich oft aufgerufen wird.
    Das ist aber recht häufig ;)
    „Meine Komplikation hatte eine Komplikation.“