2

私はUIViews: needToDragView、そのsuperView、およびの 3 つを持っていself.viewます。私が自分の(3Viewsで最も低い)touchesMoved:だけをドラッグしていたとき。needToDragViewただし、すべての 3View をドラッグできます。最低のUIViewを検出するには?

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
        UIView *dragView = [[touches anyObject] view];
        CGPoint newCenter = [[touches anyObject] locationInView:dragView.superview];
        dragView.center = newCenter;
}
4

1 に答える 1

3

これを試してください: UserInteractionEnabled = YES;needToDragView を設定していることを確認してください。

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    {
         UITouch *touch = [touches anyObject];
         if ([touch view]== needToDragView) {

         // Drag Image Here

         }
         else {

         // NSLog("Wrong");

         } 
    }

アップデート

これの代わりに、次のUIPanGestureRecognizerように使用することもできます。

UIPanGestureRecognizer pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(function:)];
    [pan setMinimumNumberOfTouches:1];
    [pan setMaximumNumberOfTouches:2];
    [needsToDragView addGestureRecognizer:pan];
    [needsToDragView setUserInteractionEnabled:YES];

- (void)function:(UIPanGestureRecognizer *)recognizer
{
    NSLog(@"Moving View");

    mainView= recognizer.view;
    CGPoint translatedPoint = [recognizer translationInView:self.view];

    if([recognizer state] == UIGestureRecognizerStateBegan)
    {
        firstX = [mainView center].x;
        firstY = [mainView center].y;

    }

    translatedPoint = CGPointMake(firstX+translatedPoint.x, firstY+translatedPoint.y);

    [mainView setCenter:translatedPoint];
}
于 2013-01-09T04:42:28.597 に答える