2011-08-31 3 views
0

나는 UILabels의 NSMutableArray를 가지고있다. 사용자가 터치 할 때이 NSMutableArray에서 특정 UILabel을 선택하고이 터치 UILabel의 중심을 사용자가 손가락을 드래그하는 곳으로 이동할 수 있어야합니다.UILabel의 NSMutableArray에서 UILabel의 중심을 이동하는 방법은 사용자가 UILabel을 터치하고 드래그하는 위치에 따라 다릅니다.

나는 수행하여 내 bunchOfLabels있는 NSMutableArray의 특정 UILabel의 이동 수 있어요 : 사용자가 2, 3, 또는 무엇이든 라벨에 닿을 경우에도

UIGestureRecognizer *gestureRecognizer; 
touchPosition = [gestureRecognizer locationInView:mainView]; 
NSLog(@"x: %f", touchPosition.x); 

UILabel *temp; 
temp = [bunchOfLabels objectAtIndex:0]; 
temp.center = touchPosition; 

이 항상 첫 번째 레이블을 이동합니다.

하지만 나는 말할 수 있어야합니다. objectAtIndex : 4 UILabel은 어디에서나 사용자가 touch하고 objectAtIndex : 4 UILabel을 드래그 할 수 있어야합니다.

저는 초보자입니다. 제발 누군가 도와주세요. 감사!

추가 정보 : 저는 현재 UIPanGestureRecognizer을 사용하고 ,이 같은 :

-(void)setupLabels { 

    bunchOfLabels = [[NSMutableArray alloc] initWithCapacity:[characters count]]; 

    for (int i=0; i < [characters count]; i++) { 

     int xPosition = arc4random() % 518; 
     int yPosition = arc4random() % 934; 

     UILabel *tempCharacterLabel = [[UILabel alloc] initWithFrame:CGRectMake(xPosition, yPosition, 60, 60)]; 
     tempCharacterLabel.text = [characters objectAtIndex:i]; // characters is another NSMutableArray contains of NSStrings 
     [tempCharacterLabel setUserInteractionEnabled:YES]; 
     [bunchOfLabels addObject:tempCharacterLabel]; 

     UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panElement:)]; 
     [panGesture setMaximumNumberOfTouches:2]; 
     [[bunchOfLabels objectAtIndex:i] addGestureRecognizer:panGesture]; 

    } 
} 

-(void)panElement:(UIPanGestureRecognizer *)gestureRecognizer 
{ 
    UILabel *temp; 
    temp = [bunchOfLabels objectAtIndex:1]; 
    temp.center = touchPosition; 
} 

모든 것은 지금까지 OK,하지만 난 코드에서 (bunchOfLabels의 특정 UILabel의 이동 할 수있는에 붙어했습니다 objectAtIndex : 1).

답변

3

만세! 알았다! 아래와 같이 panElement를 작성하면 현재 작동합니다!

-(void)panElement:(UIPanGestureRecognizer *)gesture 
{ 
    UILabel *tempLabel = (UILabel *)gesture.view; 
    CGPoint translation = [gesture translationInView:tempLabel]; 

    tempLabel.center = CGPointMake(tempLabel.center.x + translation.x, tempLabel.center.y + translation.y); 

    [gesture setTranslation:CGPointZero inView:tempLabel]; 
} 

제 질문에 답변 해 주신 분들께 감사드립니다.