2011-11-21 6 views
2

이 사이트는 UIImageView를 이동하는 방법을 설명하는 데 매우 유용합니다. 하나의 UIImageView 그리고 나를 위해 삶의 방법에 대한 예제를 찾을 수 없습니다.UIPanGestureRecognizer를 사용하여 2 개 이상의 UIImageViews를 이동하는 방법

나는 UIView에 UIPanGestureRecognizer가 할당되어 있지만 UIView 내에서 UIImageView를 패닝 할 수있는 대신 아래 코드 에서처럼 UIView를 사용하여 하나의 UIImageView 만 패닝하는 코드를 알고 있습니다.

다음은 내가 사용한 코드입니다.

- (void)viewDidLoad { 
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(move:)]; 
[panRecognizer setMinimumNumberOfTouches:1]; 
[panRecognizer setMaximumNumberOfTouches:1]; 
[_canvas addGestureRecognizer:panRecognizer]; 

[super viewDidLoad]; } 


-(void)move:(id)sender { 
CGPoint translatedPoint = [(UIPanGestureRecognizer*)sender translationInView:_canvas]; 

if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateBegan) { 
    _firstX = [photoImage center].x; 
    _firstY = [photoImage center].y; 
} 

translatedPoint = CGPointMake(_firstX+translatedPoint.x, _firstY+translatedPoint.y); 
[photoImage setCenter:translatedPoint]; } 

나는 광 화상라는있는 UIImageView를 이동하지만, 코드가 하나 개 이상있는 UIImageView를 이동하기 위해 어떻게 보이는지 알 수 있습니다.

도움을 주셔서 감사합니다.

답변

2

_canvas 대신 모든 이미지에 제스처 인식기를 추가해야합니다. 또한 다음 뷰

난 그냥 정확한 행동하는 것이 않는 사람에 대한 응용 프로그램을 작성했습니다
[imageView setUserInteractionEnabled:YES]; 
[imageView addGestureRecognizer:panRecognizer]; 
+0

도움 주셔서 감사합니다. @ 야친. 여기 수정 된 코드가 있지만, photoImage2 UIImageView 만 이동합니다. - (보이드)의 viewDidLoad { ... [광 화상 setUserInteractionEnabled : YES]; [photoImage2 setUserInteractionEnabled : YES]; [photoImage addGestureRecognizer : panRecognizer]; [photoImage2 addGestureRecognizer : panRecognizer]; ...} - (void) 이동 : (id) 보낸 사람 { ... _firstX = [(UIPanGestureRecognizer *) 보낸 사람 locationInView : self.view] .x; _firstY = [(UIPanGestureRecognizer *) 보낸 사람 locationInView : self.view] .y; } ... [(UIPanGestureRecognizer *) 보낸 사람보기] .center = translatedPoint; } – gobsofrob

+0

UIPanGestureRecognizer * 인식 자 = (UIPanGestureRecognizer *) 보낸 사람; UIView * selectedView = [인식 자보기]; \t CGPoint point = [인식 자 translationInView : self.view]; \t if ([인식기 상태] == UIGestureRecognizerStateBegan) { \t firstX = selectedView.center.x; \t firstY = selectedView.center.와이; } \t point = CGPointMake (firstX + point.x, firstY + point.y); [selectedView setCenter : point]; \t if ([인식기 상태] == UIGestureRecognizerStateEnded) { \t [selectedView setCenter : point]; } 나는이 코드를 사용하고 얼마나 많은 뷰가 있더라도 상관없이 작동한다. – Hanon

0

에 대해 YES로 userInteractionEnabled 설정합니다.

NSArray *imageViews = @[imageView, imageView2]; 

그리고, 단지 루프를 사용하여 각 하나를 통해 이동 : 기본적으로, 당신이해야 할 모든 이미지보기 (들)을 만들고, 그러한 같이있는 NSArray에 삽입합니다.

for (int i = 0; i < imageViews.count; i++) { 
    [imageViews[i] setUserInteractionEnabled:YES]; 
    [imageViews[i] addGestureRecognizer:panRecognizer]; 
} 

이 작업을 수행하는 데 필요한 것은이 전부입니다. 위 코드가 viewDidLoad 메서드에 있는지 확인하십시오. 위 코드가 panGesture를 생성하기 때문입니다.

희망이 도움이됩니다.