2016-06-19 14 views
0

sovledmehrere Bildansicht bewegen, funktionieren nicht springt zurück zur Startposition

Siehe Beitrag unten

I UITouch verwenden zwei imageviews zu bewegen. Wenn ich mich in der Bildansicht1 bewege und die Bildansicht1 freigebe, bleibt sie in dieser Position, aber wenn ich anfange, Bildansicht2 zu bewegen, springt Bildansicht1 zurück zur Startposition. Das Gleiche passiert, wenn ich imageview2 zuerst bewege. Was ich will ist, dass die Bildansichten in der Freigabeposition bleiben, nicht um zurück zur Startposition zu springen. Ich habe den gleichen Code in einem anderen alten xcode-Projekt verwendet und es funktioniert dort einwandfrei. Hier

ist der Code, den ich using- bin

- (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); 
         }]; 


    } 

    } 

} 

Ich bin dankbar für jede Hilfe.

+0

Bitte helfen Sie mir! – user3266053

Antwort

0

löste ich das Problem wie diese

ich eine versteckte UIImageView hinzugefügt, dass ich an der richtigen Stelle setzen.

In der if-Anweisung i hinzugefügt:

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