2012-02-13 21 views
0

私はtouchesBegan関数を持ち、位置を出力するUIViewControllerを持っています。私は、画面の中央に向かって素早くタップを倍にした場合iPadアプリ - touchesBeganダブルタップが正しくない

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"in"); 

    NSArray *touchesArray = [touches allObjects]; 
    for(int i=0; i<1; i++) 
    { 
     UITouch *touch = (UITouch *)[touchesArray objectAtIndex:i]; 
     CGPoint point = [touch locationInView:touch.view]; 
     NSLog(@"point = %f %f",point.x,point.y); 
    } 
} 

、私は次のような出力を得るようなものです

なぜ二タップ(39,22)として登録されていることを
2012-02-12 21:47:13.522 MoreMost[479:707] in 
2012-02-12 21:47:13.523 MoreMost[479:707] point = 698.000000 86.000000 
2012-02-12 21:47:13.617 MoreMost[479:707] in 
2012-02-12 21:47:13.619 MoreMost[479:707] point = 39.000000 22.000000 

... iPadの左上隅にある。しかし、私は途中でタップしていました。

だから、私は2つの方法でこれを解決したいと思います:

1) somehow, not let the user double tap (however it seems even when I double tap fast, the touchesBegan function is called on two separate occassions) 
2) figure out why that 2nd tap is being registered with the wrong coordinates. 
+0

1)タップすると 'touchesBegan:withEvent:'が2回呼び出されます。 (それはそれが動作する方法です)2)あなたのダブルタップの各タップが2つの別々のビューに落ちていると思われますが、私には分かりません。しかし、最も合理的な解決策は、あなたの位置を既知のビューにインデックスすることです。たとえば、touchがヒットテストを通過するビューである 'touch.view'ではなく' locationInView:self.view'です。 – NJones

+0

はい、それはうまくいった。なぜ私はtouch.view、笑を置くかわからない。ありがとう! – StanLe

答えて

0

それはするCGPointポイント= [タッチlocationInView:self.view]でなければなりません; ...ない "touch.view"

関連する問題