2

UIImageViewを含むUIViewがあります。誰かが画像ビューをドラッグしようとすると、画像ビューはその人の指に追従する必要があります。以下は、UIViewのクラスのコードです。

- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {

CGPoint touchPoint = [touch locationInView:self];


    if ( CGRectContainsPoint(self.thumb.frame, touchPoint))

        self.thumb.center = CGPointMake(touchPoint.x, self.thumb.center.y);

return YES;

}

imageViewに指を置いて動かそうとして追跡を開始しても、何も起こりません。NSLoggingから、ifステートメントが決して満たされないことがわかりました。

ただし、imageViewの外側で追跡を開始し、指をimageViewにドラッグすると、画像ビューは指に追従します。

画像ビューで指を動かしたときにCGRectContainsPoint()が機能しないのはなぜですか?

4

2 に答える 2

2
CGPoint touchPoint = [touch locationInView:self.view];

selfビューではなく(通常)、ビューコントローラです。

また、self.viewがself.thumbのスーパービューであると想定していることに注意してください。そうでない場合は、より一般的に、次を使用できます。

CGPoint touchPoint = [touch locationInView:[self.thumb superview]];
于 2011-11-15T05:55:21.650 に答える
0

タッチはどのように定義されていますか?私は以下を使用しています(標準のtouchesBeganまたはtouchesMoved内)が、selfはViewControllerです。

UITouch *touch = [[[event allTouches] allObjects] objectAtIndex:0];
于 2011-11-23T23:43:54.983 に答える