Перетащите вид с того места, где вы касаетесь iPhone - PullRequest
1 голос
/ 07 июля 2011

Я знаю, как перетащить вид или объект:

- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{

    UITouch *touch = [[event allTouches] anyObject];


    if( [touch view] == ViewMain)
    {
       CGPoint location = [touch locationInView:self.view];
       ViewMain.center = location;

    }


}

но я бы хотел начать перетаскивать этот вид или изображение с той точки, где я их коснулся. например, если я перетаскиваю (я выделил вид и поместил синий курсор):

enter image description here

в тот момент, когда я начинаю перетаскивать, например, если я перетаскиваю мышь на 20 пикселей вправо, то я хочу, чтобы представление также перетаскивало 20 пикселей вместо:

enter image description here

возможно, мне нужно изменить центр обзора так, чтобы я коснулся его кулаком. Как я мог это сделать?

Другими словами, я хотел бы сделать что-то подобное, когда вы перетаскиваете приложения на iPad:

enter image description here

1 Ответ

10 голосов
/ 07 июля 2011
float startX = 0;
float startY = 0;
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [[event allTouches] anyObject];

    if( [touch view] == ViewMain)
    {
        CGPoint location = [touch locationInView:self.view];
        startX = location.x - ViewMain.center.x;        
        startY = ViewMain.center.y;
    }
}
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    UITouch *touch = [[event allTouches] anyObject];
    if( [touch view] == ViewMain)
    {
        CGPoint location = [touch locationInView:self.view];
        location.x =location.x - startX;
        location.y = startY;
        ViewMain.center = location;
    }
}
...