2013-07-24 65 views
1

我有一个UIImageViewUILongPressGestureRecognizer,当检测到长按时发送操作。长按手势和uiimageview的移动?

我确实在UIImageView上启用了用户交互。但是,我也有一种手动滚动,其中UIImageView可以使用touchesBegantouchesMoved方法移动。

当用户交互被禁用时,只有滚动工作。当启用用户交互时,只有长按手势识别器才起作用。

我该如何做到这一点,以便两者同时工作?

代码可以共享,如果有必要,但我不认为这个问题需要它。

回答

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) 
    { 

    } 

}