2009-07-30 106 views
1

我想要檢測,當用戶搖晃iPhone時,觸摸屏幕的哪一部分。多點觸控問題

我這樣做以下列方式:如果用戶做其他抖動之前將雙手,但一切都被搞砸了,如果我在屏幕上有兩隻手,並刪除其中的一個

-(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; 
     } 
    } 
} 

一切正常。

即我用雙手在屏幕上搖晃,之後我只想用一隻手搖晃iPhone。在這種情況下,抖動不會計數 - 就好像沒有觸摸屏幕一樣。我假設當我從屏幕上移開一隻手時,兩個「觸摸」都被刪除。

這是什麼問題,我該如何解決?

謝謝。

回答

2

你爲什麼要通過-allTouches進行枚舉?只需列舉傳入的touches集。這兩種方法都是一樣的。