2016-05-31 4 views
-1

ziehen Ich möchte eine Schaltfläche UIScrollView in eine andere UIView mit UIPanGesture ziehen. Diese beiden Ansichten sind Kind von Xib View. Ich habe bereits versucht, eine Kopie von UIButtonView zu erstellen, aber ich bin nicht in der Lage, dies reibungslos zu bewegen.wie Sie eine UIButton Scrollview zu UIView in iOS

Hier ist ein Code, den ich Umsetzung bin:

-(void) PanGestureFunc :(UIPanGestureRecognizer *) recognizer 
{ 
    CGRect originOnScreen = [recognizer.view convertRect:self.view.bounds toView:nil]; 





    if(recognizer.state == UIGestureRecognizerStateBegan) 
     { 

      if([[recognizer.view superview].subviews containsObject:recognizer.view]) 
      { 
       btn = (UIButton *)recognizer.view; 
       btn.tag = [recognizer.view tag]; 

       [recognizer.view removeFromSuperview]; 
       [self.view addSubview:btn]; 

        float pointX = originOnScreen.origin.x + btn.frame.size.width/2; 
        float pointY = originOnScreen.origin.y + btn.frame.size.height/2; 

       [btn setCenter:CGPointMake(pointX, pointY)]; 
       } 


      CGPoint translation = [recognizer translationInView:self.view]; 
      btn.center = CGPointMake(btn.center.x + translation.x, 
          btn.center.y + translation.y); 

      [recognizer setTranslation:CGPointMake(0, 0) inView:self.view]; 


     } 



} 

Bitte diese so schnell wie möglich lösen ..

+0

Sie wollen helfen, einen 'UIButton ScrollView' ziehen? Was in aller Welt ist das? 'UIButton' und' UIScrollView' sind zwei völlig unterschiedliche Steuerelemente. – NSNoob

+0

Wie auch immer. Entfernen Sie einfach die Schaltfläche aus der Bildlaufansicht und fügen Sie sie als Unteransicht zu Ihrer UIView-Zieladresse hinzu. Oder, wenn Ihre Frage ist, wie man eine glatte Animation für diesen Prozess macht, redigieren Sie Ihre Frage, um genau das im Titel anzugeben. – NSNoob

Antwort

0

dies versuchen,

In Viewdidload

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
button.frame = CGRectMake(20, 20, 50, 30); 
[button addTarget:self action:@selector(imageMoved:withEvent:) forControlEvents:UIControlEventTouchDragInside]; 
[button addTarget:self action:@selector(imageMoved:withEvent:) forControlEvents:UIControlEventTouchDragOutside]; 
[button setBackgroundColor:[UIColor orangeColor]]; 


[self.view addSubview:button]; 

Und Aktionsmethode ist li ke,

- (IBAction) imageMoved:(id) sender withEvent:(UIEvent *) event 
{ 
UIControl *control = sender; 

UITouch *t = [[event allTouches] anyObject]; 
CGPoint pPrev = [t previousLocationInView:control]; 
CGPoint p = [t locationInView:control]; 

CGPoint center = control.center; 
center.x += p.x - pPrev.x; 
center.y += p.y - pPrev.y; 
control.center = center; 
} 

Hope this :)