2011-12-28 5 views
8

В моем iPhone App Я хочу реализованного функциональности, как показано нижеiPhone App: реализация Перетащите изображения в UIView

enter image description here

пользователь может выбрать форму (изображение) с одной точки зрения и положить в другой вид

Как я могу достичь этого?

Просьба помочь и предложить.

Спасибо.

+0

[HTTP://stackoverflow.com/questions/17678735/adding-drag-and-drop-component-to-ios-app/31963306#31963306](http://stackoverflow.com/questions/17678735/adding-drag-and-drop- компонент-to-ios-app/31963306 # 31963306) Вы можете попробовать эту ссылку, наслаждайтесь кодированием :) – SARATH

ответ

4

Try ссылке ниже drag and drop image around the screen

также try this

+1

привет, ваш первый линок k мертв. для будущих ссылок вы можете разместить содержание ссылки в своем комментарии. SO предназначен как универсальный магазин и не должен ссылаться на потенциально мертвые ссылки – lizzy81

-2

Три шага решения

1) u'll должны реализовать/слушать сенсорных событий

2) реализуют тянущие и сенсорные события

3), а затем управлять методом movetosuperview.

+0

Исходный код для перетаскивания с привязкой к области http://stackoverflow.com/a/9233102/1537178 –

5

Самый простой способ - использовать UIPanGestureRecognizer. Это даст вам сообщения при перемещении представления и при его удалении. Когда он перемещается, обновите его центр. Когда он отбрасывается, проверьте, находится ли его позиция в пределах видимости, которую вы хотите заместить. (Возможно, вам нужно будет преобразовать координаты в систему координат целевого представления.) Если да, выполните соответствующие действия.

1

Вы можете обратиться к предыдущему сообщению, которое, безусловно, поможет вам достичь этой функциональности ...

  1. Basic Drag and Drop in iOS
  2. Building drag and drop interface on iphone
  3. iPhone drag/drop

Для всех выше ссылке, Вы должны иметь в виду, что вам нужно сначала получить TouchesBegin событие для любого элемента управления, а затем вы должны получить TouchesMoved Событие для такого же управления.

В событии TouchesMoved вам просто нужно получить центральную точку (CGPoint) элемента управления. И когда вы отпустите, элемент управления будет установлен на CGPoint. Если это создает проблему, вы можете принять это значение CGPoint в переменной и установить эту точку в событии TouchesEnded.

В вашем случае, я думаю, вы должны поддерживать иерархия из соображений ... Else при перетаскивании просмотра может быть не видны ...

ДЛЯ БОЛЕЕ КОДИРОВАНИЙ ЧАСТИ:

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

     NSLog(@"%f,%f", self.center.x, self.center.y); 
     CGPoint newLoc = CGPointZero; 

     newLoc = [self.mainView convertPoint:[[touches anyObject] locationInView:self.superview] toView:self.superview]; 
     float newX = newLoc.x + self.superview.frame.origin.x + (self.frame.size.width /2) + [[touches anyObject] locationInView:self].x ; 
     float newY = newLoc.y - (((UIScrollView *)self.superview).contentOffset.y *2) ; 
     NSLog(@"content offset %f", ((UIScrollView *)self.superview).contentOffset.y); 

     self.scrollParent.scrollEnabled = NO; 
     NSLog(@"%f,%f", self.center.x, self.center.y); 

     newLoc = CGPointMake(newX, newY); 
     [self.superview touchesCancelled:touches withEvent:event];                
     [self removeFromSuperview]; 
     NSLog(@"%f,%f", self.center.x, self.center.y); 


     self.center = CGPointMake(newLoc.x, newLoc.y); 
     [self.mainView addSubview:self]; 
     NSLog(@"%f,%f", self.center.x, self.center.y); 

     [self.mainView bringSubviewToFront:self]; 
     isInScrollview = NO; 
} 

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

    [UIView beginAnimations:@"stalk" context:nil]; 
    [UIView setAnimationDuration:.001]; 
    [UIView setAnimationBeginsFromCurrentState:YES]; 

    UITouch *touch = [touches anyObject]; 

    self.center = [touch locationInView: self.superview]; 

    [UIView commitAnimations]; 
    if ((self.center.x + (self.frame.size.width/2)) > 150 && hasExitedDrawer && !self.scrollParent.dragging) { 
     self.scrollParent.scrollEnabled = NO; 

     [self.delegate moveItemsDownFromIndex: ((self.center.y + (self.scrollParent.contentOffset.y))/44) + 1 ]; 
     //NSLog(@"%i", ((self.center.y + (self.scrollParent.contentOffset.y *2))/44) + 1); 
    } 

    if (self.center.x + (self.frame.size.width/2) < 150) { 

     hasExitedDrawer = YES; 

    } 

} 

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

    if ((self.center.x + (self.frame.size.width/2)) > 150 && hasExitedDrawer && !self.scrollParent.dragging) { 
     CGPoint newLoc = CGPointZero; 

     newLoc = [self.scrollParent convertPoint:[[touches anyObject] locationInView:self.superview] toView:self.superview]; 
     float newY = newLoc.y + (self.scrollParent.contentOffset.y *2); 

     [self.scrollParent insertSubview:self atIndex:((self.center.y + (self.scrollParent.contentOffset.y))/44) ]; 
     self.frame = CGRectMake(0, newY, self.frame.size.width, self.frame.size.height); 
     isInScrollview = YES; 
     hasExitedDrawer = NO; 
    } 
} 

Этот код может содержать некоторые неуместные, но дает вам больше идей ...

0

Adding drag and drop component to iOS app Вопрос

я вещь, которую вы собираетесь построить функцию, как добавить в корзину в большинстве торгового приложения, как Amazon, Флип картинга и т.д ..

Смежные вопросы