3

こんにちは、コントロールのタッチ位置/ポイント、またはタッチが発生した場所を取得したいと思います。

このためにこれを実装しましたが、正しいタッチポイントが得られません。

   // Create gesture recognizer, notice the selector method
UITapGestureRecognizer *oneFingerTwoTaps =
[[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(oneFingerTwoTaps)] autorelease];
oneFingerTwoTaps.delegate=self;
// Set required taps and number of touches
[oneFingerTwoTaps setNumberOfTapsRequired:1];
[oneFingerTwoTaps setNumberOfTouchesRequired:1];
[[self view] addGestureRecognizer:oneFingerTwoTaps];

 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

    CGPoint point= [touch locationInView:touch.view];
        NSLog(@"Point - %f, %f",point.x,point.y);
    NSLog(@"Touch");
    return NO; // handle the touch
}

UIButton、UIImage、UITableViewをヒットしようとすると、正しいヒットポイントが得られません。間違っていることはありますか? 私を助けてください。ありがとうございました。

4

2 に答える 2

8

コードは、タッチが発生したビューの位置を出力します。したがって、中央の 50x100 サイズのボタンをタッチすると、「Point 25.0, 50.0」が出力されます。

UIScreen のタッチ位置を見つけたい場合は、値を変換する必要があります。

 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

    CGPoint point = [touch locationInView:touch.view];
    CGPoint pointOnScreen = [touch.view convertPoint:point toView:nil];
    NSLog(@"Point - %f, %f", pointOnScreen.x, pointOnScreen.y);
    NSLog(@"Touch");
    return NO; // handle the touch
}

または、ウィンドウ (画面) 空間の座標をすぐに取得します。

 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

    CGPoint pointOnScreen = [touch locationInView:nil];
    NSLog(@"Point - %f, %f", pointOnScreen.x, pointOnScreen.y);
    NSLog(@"Touch");
    return NO; // handle the touch
}
于 2013-06-14T13:54:01.077 に答える