перемещение нескольких изображений не работает, возвращается в исходное положение

СОВЛЕД

Смотри сообщение ниже

Я использую UITouch для перемещения двух изображений. Когда я перемещаюсь по изображению1 и отпускаю изображение1, оно остается в этом положении, но когда я начинаю перемещать изображение2, изображение1 возвращается в исходное положение. То же самое произойдет, если я сначала перемещу imageview2. Я хочу, чтобы изображения оставались в положении выпуска, а не возвращались в исходное положение. Я использую тот же код в другом старом проекте xcode, и там он работает идеально.

Вот код, который я использую-

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

// get touch event

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

CGPoint touchLocation = [touch locationInView:self.view];

if ([touch view] == imageView1 && imageView1.tag == 0) { // If touched view is imageView1 , then assign it its new location

    imageView1.center = touchLocation;
    [self.view bringSubviewToFront:imageView1];

}

if ([touch view] == imageView2 && imageView2.tag == 0) { // If touched view is imageView2, then assign it its new location

    imageView2.center = touchLocation;
    [self.view bringSubviewToFront:imageView2];
    [imageView2 setFrame:CGRectMake(imageView2.frame.origin.x,
                                     imageView2.frame.origin.y,68,138)];

  }

}


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

CGPoint touchLocation = [touch locationInView:self.view];
NSLog(@"%@", NSStringFromCGPoint(touchLocation));

if ([touch view] == imageView1 && imageView1.tag == 0) {

    if ((touchLocation.x >= 289 && touchLocation.x <= 381) && (touchLocation.y  >= 99 && touchLocation.y <= 135)) {
        //NSLog(@"imageView1");

        imageView1.tag=1;

        [UIView animateWithDuration:0.35
                              delay:0.0
                            options: UIViewAnimationOptionAllowAnimatedContent
                         animations:^{
                             imageView1.frame = CGRectMake(244.0, 64.0, 112, 97);



                             NSURL *musicFile;
                             musicFile = [NSURL fileURLWithPath:
                                          [[NSBundle mainBundle]
                                           pathForResource:@"knapp"
                                           ofType:@"mp3"]];
                             audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:nil];
                             [audioPlayer play];
                             audioPlayer.delegate = self;

                         }
                         completion:^(BOOL finished){
                             NSLog(@"Auto adjust!");
                         }];

    }

    else {

        [UIView animateWithDuration:0.35
                              delay:0.0
                            options: UIViewAnimationOptionAllowAnimatedContent
                         animations:^{
                             imageView1.frame = CGRectMake(50, 626, 112, 97);

                         }
                         completion:^(BOOL finished){
                             NSLog(@"imageView1!");

                             //NSLog(@"Jump back!");
                             NSLog(@"%ld", (long)imageView1.tag);
                         }];


    }

}

if ([touch view] == imageView2 && imageView2.tag == 0) {

    if ((touchLocation.x >= 426 && touchLocation.x <= 450) && (touchLocation.y  >= 210 && touchLocation.y <= 240)) {
        //NSLog(@"imageView2");

        imageView2.tag=1;

        [UIView animateWithDuration:0.35
                              delay:0.0
                            options: UIViewAnimationOptionAllowAnimatedContent
                         animations:^{
                             imageView2.frame = CGRectMake(408.0, 152.0, 68, 138);

                             NSURL *musicFile;
                             musicFile = [NSURL fileURLWithPath:
                                          [[NSBundle mainBundle]
                                           pathForResource:@"knapp"
                                           ofType:@"mp3"]];
                             audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:nil];
                             [audioPlayer play];
                             audioPlayer.delegate = self;

                         }
                         completion:^(BOOL finished){
                             NSLog(@"Auto adjust!");
                         }];

    }

    else {

        [UIView animateWithDuration:0.35
                              delay:0.0
                            options: UIViewAnimationOptionAllowAnimatedContent
                         animations:^{
                             imageView2.frame = CGRectMake(82, 519, 49, 99);

                         }
                         completion:^(BOOL finished){
                             //NSLog(@"Jump back");
                             NSLog(@"%ld", (long)imageView2.tag);
                         }];


    }

  }

}

Я благодарен за любую помощь.


person user3266053    schedule 19.06.2016    source источник


Ответы (1)


Я решил проблему следующим образом

Я добавил скрытый UIImageView, который я разместил в нужном месте.

В операторе if я добавил:

completion:^(BOOL finished){
                             NSLog(@"Auto position!");
                             imageView1x.hidden = NO;
                             imageView1.hidden = YES;
                         }];
person user3266053    schedule 14.07.2016