2016-07-25 9 views
0

UIView nach oben gleitenden automatisch nach den Finger vom Handy-Bildschirm zu entfernen

Dies ist der Bildschirm Zur Zeit arbeite ich an. Wie Sie unten sehen können, ist eine UIView, wo ich Label und vier Buttons verwendet habe. Und darunter habe ich die Tabellenansicht verwendet, um das Menü anzuzeigen. Ich habe SwipeGesture verwendet, um die Ansicht nach oben und unten zu verschieben. Was ich jetzt möchte, wenn ich das Hintergrundbild berühre, rutscht die UIView vollständig herunter und wenn ich meinen Finger vom Bildschirm entferne, springt der UIView automatisch auf die gleiche Position wie im Bild gezeigt. Kann mir jemand helfen?

Dies ist mein Code, den ich habe so weit arbeitete

UISwipeGestureRecognizer *gestureRecognizerUp = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeHandlerUp:)]; 
[gestureRecognizerUp setDirection:(UISwipeGestureRecognizerDirectionUp)]; 
[self.subview addGestureRecognizer:gestureRecognizerUp]; 

UISwipeGestureRecognizer *gestureRecognizerDown = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeHandleDown:)]; 
[gestureRecognizerDown setDirection:(UISwipeGestureRecognizerDirectionDown)]; 
[self.subview addGestureRecognizer:gestureRecognizerDown]; 


- (void)swipeHandlerUp:(UISwipeGestureRecognizer *)sender { 
    if (sender.direction == UISwipeGestureRecognizerDirectionUp){ 
     [UIView animateWithDuration:0.3 animations:^{ 
      CGPoint Position = CGPointMake(self.view.frame.origin.x, self.view.frame.origin.y+20); 
      self.subview.frame = CGRectMake(Position.x , Position.y , self.subview.frame.size.width, self.subview.frame.size.height); 
      [self.navigationController popViewControllerAnimated:YES]; 
     }]; 
    } 
} 

- (void)swipeHandleDown:(UISwipeGestureRecognizer *)sender { 
    if (sender.direction == UISwipeGestureRecognizerDirectionDown){ 
     [UIView animateWithDuration:0.3 animations:^{ 
      CGPoint Position = CGPointMake(self.view.frame.origin.x , self.view.frame.origin.y+430); 
      self.subview.frame = CGRectMake(Position.x , Position.y , self.subview.frame.size.width, self.subview.frame.size.height); 
      [self.navigationController popViewControllerAnimated:YES]; 
     }]; 
    } 
} 
+0

können Sie verwenden touchEnd Methode, um die Finger Release zu erkennen. –

+0

Ich weiß es nicht genau. Wird es funktionieren?? – pri

+0

in Ihrer swipeHandlerUp-Methode müssen Sie den Rahmen nach oben verschieben. So für Y-Achse, tun Sie so etwas - self.view.frame.origin.y -200. Dann für die swipeHandleDown-Methode: self.view.frame.origin.y +200. – Signare

Antwort

0

Sie können diese -(void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event;

in tun und stellen Sie sicher, wie für beide Ihre swipeGestures alle drei Geste Verhalten zu deaktivieren.

Your_Swipe_gesture_Object.delaysTouchesBegan = NO; 
Your_Swipe_gesture_Object.delaysTouchesEnded = NO; 
Your_Swipe_gesture_Object.cancelsTouchesInView = NO; 
0
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event 
{ 
[super touchesBegan:touches withEvent:event]; 
    [UIView animateWithDuration:0.3 animations:^{ 
      CGPoint Position = CGPointMake(self.view.frame.origin.x, self.view.frame.origin.y+20); 
      self.subview.frame = CGRectMake(Position.x , Position.y , self.subview.frame.size.width, self.subview.frame.size.height); 
      [self.navigationController popViewControllerAnimated:YES]; 
     }]; 
} 
-(void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event 
{ 
[super touchesBegan:touches withEvent:event]; 
    [UIView animateWithDuration:0.3 animations:^{ 
      CGPoint Position = CGPointMake(self.view.frame.origin.x , self.view.frame.origin.y+430); 
      self.subview.frame = CGRectMake(Position.x , Position.y , self.subview.frame.size.width, self.subview.frame.size.height); 
      [self.navigationController popViewControllerAnimated:YES]; 
     }]; 
} 
+0

Sorry suarabh ist es nicht die Unteransicht muss komplett durch Ziehen der Ansicht herunterkommen. Und wenn der Finger losgelassen wird, sollte er automatisch – pri

+0

auftauchen, wenn du den Finger auf die Ansicht ziehst .. willst du anzeigen? –

+0

ich verstehe es nicht, was du sagst. – pri