Как использовать UIPanGestureRecognizer для перемещения 2 или более UIImageViews - PullRequest
2 голосов
/ 21 ноября 2011

Этот сайт был очень полезен, когда речь зашла о том, как использовать UIPanGestureRecognizer для перемещения UIImageView, но у меня есть программа, в которой мне нужно переместить (т.е. панорамировать) более одного UIImageView, и на всю жизнь я могу не найти пример того, как это сделать.

Я понимаю, что UIPanGestureRecognizer назначен UIView, но вместо возможности панорамирования любого UIImageView в UIView я знаю только код для панорамирования только одного UIImageView с UIView, как видно из кода ниже.

Вот код, который я использовал.

- (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 с именем photoImage, но знаю, как будет выглядеть код для панорамирования более одного UIImageView.

Заранее благодарю за помощь.

Ответы [ 2 ]

2 голосов
/ 21 ноября 2011

Вы должны добавить распознаватель жестов для всех ваших изображений вместо _canvas.И также установите userInteractionEnabled в YES для этих представлений

[imageView setUserInteractionEnabled:YES];
[imageView addGestureRecognizer:panRecognizer];
0 голосов
/ 20 июня 2014

Я только что написал приложение для кого-то, кто выполняет именно это действие.По сути, все, что вам нужно сделать, это создать представления изображений и вставить их в NSArray следующим образом:

NSArray *imageViews = @[imageView, imageView2];

Затем просто просмотрите каждое из них с помощью цикла for.

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

Это все, что требуется для того, чтобы это действие сработало.Просто убедитесь, что приведенный выше код находится в вашем методе viewDidLoad, потому что именно здесь вы создаете свой panGesture.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...