2011-11-21 49 views
2

這個網站在解釋如何使用UIPanGestureRecognizer移動UIImageView時非常有幫助,但是我有一個程序需要移動(即移動)多於一個UIImageView和我的生活,我無法找到如何做到這一點的例子。如何使用UIPanGestureRecognizer移動2個或更多的UIImageView

我明白一個UIPanGestureRecognizer分配給UIView,但不能在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]; } 

我可以平移一個名爲photoImage的UIImageView,但知道代碼看起來像是平移多個UIImageView。

非常感謝您的幫助。

回答

2

您應該將手勢識別器添加到所有圖像而不是_canvas。 並設置userInteractionEnabled爲YES這些意見

[imageView setUserInteractionEnabled:YES]; 
[imageView addGestureRecognizer:panRecognizer]; 
+0

感謝您的幫助@Yadyn。這裏是修改過的代碼,但只有photoImage2 UIImageView會平移。 - (無效)viewDidLoad中{ ... [光象setUserInteractionEnabled:YES]; [photoImage2 setUserInteractionEnabled:YES]; [photoImage addGestureRecognizer:panRecognizer]; [photoImage2 addGestureRecognizer:panRecognizer]; (void)move:(id)sender { ... _firstX = [(UIPanGestureRecognizer *)sender locationInView:self.view] .x; _firstY = [(UIPanGestureRecognizer *)sender locationInView:self.view] .y; } ... [(UIPanGestureRecognizer *)sender view] .center = translatedPoint; } – gobsofrob

+0

UIPanGestureRecognizer * recognitionizer =(UIPanGestureRecognizer *)sender; UIView * selectedView = [識別器視圖]; \t CGPoint point = [識別器translationInView:self.view]; \t 如果([識別器狀態] == UIGestureRecognizerStateBegan){ \t firstX = selectedView.center.x; \t firstY = selectedView.center。Ÿ; } \t point = CGPointMake(firstX + point.x,firstY + point.y); [selectedView setCenter:point]; \t 如果([識別器狀態] == UIGestureRecognizerStateEnded){ \t [selectedView setCenter:point]; } 我使用此代碼,無論有多少視圖,它都可以正常工作 – Hanon

0

我剛纔寫的人一個應用程序,這是否確切行動。基本上,所有你需要做的就是創建圖像視圖(S),並將其插入到一個NSArray的,因爲這樣的:

NSArray *imageViews = @[imageView, imageView2]; 

然後,就通過每一個使用for循環。

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

這就是完成此操作所需的全部內容。只要確保上面的代碼在你的viewDidLoad方法中,因爲那是你創建panGesture的地方。

希望這會有所幫助!

相關問題