Frage

Ich habe eine Anwendung, die einen Ton zu spielen beginnt, wenn der Benutzer den uiview berührt und so schiebt der Benutzer die Finger auf verschiedene Töne zu ändern auf dem Bildschirm. Der Sound stoppt, wenn der Benutzer den Finger hebt.

Ich bin die touchesBegan mit, verschobene und Ended Event für diese.

Mein Problem ist, berührt Ended (und / oder abgebrochen) wird ausgelöst, manchmal nicht richtig und der Ton immer wieder zu spielen, auch nachdem die Finger vom Bildschirm abgehoben wird.

Um dieses Problem zu umgehen würde Ich mag einen Timer implementieren, die für die Anzahl der Berührungen auf dem Bildschirm überprüfen würden, und wenn es Null ist, wird es prüfen und den Audioplayer, wenn aufhören zu spielen.

Ich habe einige Code gesucht, der mir die Zahl der Noten wie

bekommen könnte

UITouch * berührt = [self getAllTouchesonScreen];

oder etwas:)

War es hilfreich?

Lösung

Touches Ended Ereignis manchmal nicht gefeuert bekommt.

Ich habe berührt Bruchstellen versucht Einstellung abgebrochen und Berührungen beendet Ereignisse und es manchmal tut Hit.

versuchen, das GLPaint Beispielprogramm von Apple-Website und versuchen, eine NSLog in toches beendet und einigen schnellen Zeichnungen auf dem Bildschirm tun und heben Sie den Finger schnell, wie die Finger vom Bildschirm zu werfen.

Sie werden wissen, was ich meine. Meine aktuelle Lösung für diese beinhaltet Beschleunigungsmesser:)

Hinweis: Ich benutze dies für alle Veranstaltungen finden: (void) sendevent: (UIEvent *) Ereignis

Andere Tipps

NSSet *allTouches = [event allTouches];
for(GLuint index = 0; index < [allTouches count]; ++index)
{
    UITouch *touch = [[allTouches allObjects] objectAtIndex:index];
    if([touch phase] != UITouchPhaseCancelled)
    {
        CGPoint touchPoint = [touch locationInView:self];
        //do something with touchPoint that has state [touch phase]
    }
}

Sie können diesen Code in allen Funktionen Touch-Ereignis verwenden (touchesBegan, touchesEnded, touchesMoved) und Sie können Berührungen zählen und ihre Zustände kennen.

Vergessen Sie nicht, über touchesCanceled. Fügen Sie diese Funktion / Methode und NSLog es, wenn ein Touch-Enden dort oben Ich denke, Sie werden einige fehlende Berührungen finden.

Wenn Sie sich für einen Stufenanzahl suchen - Klopfen an der gleichen Stelle mehr als einmal, ohne den Finger viel zu bewegen - man kann es über bekommen:

-(void)iPhoneTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

UITouch *touch = [touches anyObject];
CGPoint touchPosition = [touch locationInView:self];
lastTouchTime = [touch timestamp];
myTouchCount = [touch tapCount];

Aber ich es auch tun manuell touchesMoved, um zu sehen, wie weit es bewegt und Aufhebung der Fähigkeit zu verdoppeln / triple tippen, wenn eine der Hähne zu weit bewegt, und das Zählen Hähne so lange wie Sie in einem gültigen Hahn Zustand sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top