简体   繁体   中英

TouchesMoved only moves a little

I am trying to allow the user to drag a label around the screen, but in the simulator it only moves a little each time I touch somewhere on the screen. It will jump to the location and then drag slightly, but then it will stop dragging and I have to touch a different location to get it to move again. Here is my code in my .m file.

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *Drag = [[event allTouches] anyObject];

    firstInitial.center = [Drag locationInView: self.view];

}

My ultimate goal is to be able to drag three different labels on the screen, but I'm just trying to tackle this problem first. I would greatly appreciate any help!

Thanks.

Try using a UIGestureRecognizer instead of -touchesMoved:withEvent: . And implementing something similar to the following code.

//Inside viewDidLoad
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(dragonMoved:)];
panGesture.minimumNumberOfTouches = 1;
[self addGestureRecognizer:panGesture];
//**********

- (void)dragonMoved:(UIPanGestureRecognizer *)gesture{

    CGPoint touchLocation = [gesture locationInView:self];
    static UIView *currentDragObject;

   if(UIGestureRecognizerStateBegan == gesture.state){

        for(DragObect *dragView in self.dragObjects){

            if(CGRectContainsPoint(dragView.frame, touchLocation)){

                currentDragObject = dragView;
                break;
            }
        }


    }else if(UIGestureRecognizerStateChanged == gesture.state){

        currentDragObject.center = touchLocation;

    }else if (UIGestureRecognizerStateEnded == gesture.state){

        currentDragObject = nil;

    }

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM