2016-01-24 165 views
0

我有一個UIImageView放置與框架(0,0,320,200)。觸摸拖動一個在屏幕上查看

我已添加觸摸拖動到它使用簡單的手勢。

- (void)touchesMoved:(NSSet *)set withEvent:(UIEvent *)event { 
    CGPoint p = [[set anyObject] locationInView:self.superview]; 
    self.center = p; 
} 

它工作正常,但是當我將其拖到屏幕底部假設,並刪除了我的手指,然後嘗試觸摸它,它停止檢測的視圖觸摸,並開始在視圖上檢測到觸摸屏幕。現在這個imageView放置在所有視圖的頂部,所以我不確定它甚至拖動它爲什麼沒有觸及,

現在,如果以某種方式使用任何按鈕使其移動到其原始位置,它將開始再次檢測觸摸。

那麼這裏發生了什麼?

回答

2

例如,在您的viewDidLoad方法內設置gestureRecognizer

UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(wasDragged:)]; 

[YourImageView addGestureRecognizer:panRecognizer]; 

一旦您的ImageView已被移動gestureRecognizer對象將解僱你創建wasDragged:目標方法,並從內部在這裏你可以更新視圖的位置。

- (void)wasDragged:(UIPanGestureRecognizer *)recognizer { 

    UIImagewView *imageView = (UIImagewView *)recognizer.view; 
    CGPoint translation = [recognizer translationInView:imageView]; 

    imageView.center = CGPointMake(imageView.center.x + translation.x, imageView.center.y + translation.y); 
    [recognizer setTranslation:CGPointZero inView:imageView]; 
} 

在此之後一直拖到就像你說的在屏幕的底部,你應該能夠從您上次離開它的位置再次拖動。

我希望這有助於。

+0

爲什麼UIImageView在其中心已經移出UIView之後忽略了觸摸? –

+0

無論如何,您可以忽略默認值爲YES。我已經編輯了刪除它的答案,因爲您不需要在此處設置。我使用它,因爲我有一個特定的設置,在移動時我正在更改圖像。 –