2009-07-30 2 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セットを列挙してください。どちらの方法も同じです。