2013-07-24 6 views
1

У меня есть UIImageView с UILongPressGestureRecognizer, который отправляет действие при обнаружении длинного нажатия.Длинный жест и движение uiimageview?

У меня есть взаимодействие с пользователем на UIImageView. Тем не менее, у меня также есть своего рода ручная прокрутка, где UIImageView можно перемещать с использованием методов touchesBegan и touchesMoved.

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

Как я могу сделать так, чтобы обе работали одновременно?

Код может быть общим, если необходимо, но я не думаю, что эта проблема требует этого.

ответ

0

Знаки распознавания жестов всегда имеют приоритет и переопределяют touchesBegan: события стиля. Вам придется реализовать оба поведения, используя тот же API/метод.

0

Прежде всего, вам нужно будет использовать жест для перемещения изображения, как показано ниже.

UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)]; 
[panRecognizer setMinimumNumberOfTouches:1]; 
[panRecognizer setMaximumNumberOfTouches:1]; 
[panRecognizer setDelegate:self]; 
[vwBigImage addGestureRecognizer:panRecognizer]; 

функция, которая будет называться как ниже ..

-(void)move:(id)sender { 

CGPoint translatedPoint = [(UIPanGestureRecognizer*)sender translationInView:yourview]; 

if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateBegan) { 
    _firstX = [yourimageview center].x;//declare CGFloat _firstX; in .h file 

    _firstY = [yourimageview center].y;//declare CGFloat _firstY; in .h file 
} 

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

} 

Теперь ваши оба жесты будут называться.

Дайте мне знать, что это работает или нет!

Счастливое кодирование !!!!

3
UILongPressGestureRecognizer *gestureRecognizer = [[UILongPressGestureRecognizer alloc] init]; 
[gestureRecognizer addTarget:self action:@selector(imgLongPressed:)]; 
gestureRecognizer.delegate = self; 
[imgview addGestureRecognizer: gestureRecognizer]; 

- (void) imgLongPressed:(UILongPressGestureRecognizer*)sender 
{ 
    UIImageView *view_ =(UIImageView*) sender.view; 
    CGPoint point = [sender locationInView:view_.superview]; 

    if (sender.state == UIGestureRecognizerStateBegan) 
    { 

    } 
    else if (sender.state == UIGestureRecognizerStateChanged) 
    { 

    } 
    else if (sender.state == UIGestureRecognizerStateEnded) 
    { 

    } 

}