Frage

Ich möchte feststellen, welcher Teil des Bildschirms berührt wird, wenn der Benutzer das iPhone schüttelt.

Ich mache es auf folgende Weise:

-(void) accelerometer: (UIAccelerometer*)accelerometer didAccelerate: (UIAcceleration*)acceleration
{
    float shakeStrength = sqrt( acceleration.x * acceleration.x + acceleration.y * acceleration.y + acceleration.z * acceleration.z );

    if (shakeStrength >= 1.5f)
    {
        if (isLeftHandTouches && isRightHandTouches)
        {
            DebugLog(@"both hands shake");
        } else if (isLeftHandTouches)
        {
            DebugLog(@"left hand shake");
        } else if (isRightHandTouches)
        {
            DebugLog(@"right hand shake");
        }
    }
}

-(void) touchesBegan: (NSSet *)touches withEvent: (UIEvent *)event
{
    NSSet *allTouches = [event allTouches];

    for (int i = 0; i < [allTouches count]; i++)
    {
        if ([ [ [allTouches allObjects] objectAtIndex: i] locationInView: [self view] ].x <= 240.0f)
        {
            isLeftHandTouches = YES;
        } else
        {
            isRightHandTouches = YES;
        }
    }
}

-(void) touchesEnded: (NSSet *)touches withEvent: (UIEvent *)event
{
    NSSet *allTouches = [event allTouches];

    for (int i = 0; i < [allTouches count]; i++)
    {
        if ([ [ [allTouches allObjects] objectAtIndex: i] locationInView: [self view] ].x <= 240.0f)
        {
            isLeftHandTouches = NO;
        } else
        {
            isRightHandTouches = NO;
        }
    }
}

Alles funktioniert gut, wenn der Benutzer beide Hände entfernt, bevor sie einen weiteren Schütteln machen, aber alles wird durcheinander, wenn ich beide Hände auf dem Bildschirm habe und eines davon entfernen.

IE Ich schüttle mit beiden Händen auf dem Bildschirm und danach möchte ich das iPhone mit nur einer Hand schütteln. In diesem Fall wird der Shake nicht zählt - als ob auf dem Bildschirm keine Berührungen auf dem Bildschirm. Ich nehme an, wenn ich eine Hand vom Bildschirm entferte, werden beide "Berührungen" entfernt.

Was ist das Problem und wie kann ich es beheben?

Vielen Dank.

War es hilfreich?

Lösung

Warum zählst du auf? -allTouches? Nur über die aufgezählt touches Set, das übergeben wird. Gleiches gilt für beide Methoden.

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