簡體   English   中英

長按手勢和uiimageview的運動?

[英]Long Press gesture and movement of uiimageview?

我有一個帶有UILongPressGestureRecognizerUIImageView ,當檢測到長UILongPressGestureRecognizer發送動作。

我確實在UIImageView上啟用了用戶交互。 但是,我也有一種手動滾動,可以使用touchesBegantouchesMoved方法移動UIImageView

禁用用戶交互時,僅滾動工作。 啟用用戶交互時,只有長按手勢識別器才能工作。

我怎樣才能使它們同時工作?

如有必要,可以共享代碼,但我不認為這個問題需要它。

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

    }

}

手勢識別器總是優先考慮並覆蓋touchesBegan: style events。 您必須使用相同的API /技術實現這兩種行為。

首先,您必須使用手勢來移動圖像,如下所示。

 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];

}

現在你的兩個手勢都會被調用。

讓我知道它的工作與否!

快樂的編碼!!!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM