2011-03-10 49 views

回答

1

從本質上來看,您希望將UIGestureRecognizer放置在您希望拖動的每個視圖中。在識別來電的選擇,你需要處理在switch語句中,類似於以下各類型的國家:

- (void)handleDragging:(UILongPressGestureRecognizer *)gestureRecognizer 
{  
    switch ([gestureRecognizer state]) 
    { 
     case UIGestureRecognizerStateBegan: 
      [self startDragging:gestureRecognizer]; 
      break; 
     case UIGestureRecognizerStateChanged: 
      [self doDrag:gestureRecognizer]; 
      break; 
     case UIGestureRecognizerStateEnded: 
     case UIGestureRecognizerStateCancelled: 
     case UIGestureRecognizerStateFailed: 
      [self stopDragging:gestureRecognizer]; 
      break; 
     default: 
      break; 
    } 
} 

這將提供3個入口點。我建議在startDrag中:從滾動視圖中移除視圖(如果它在一個視圖內),並將其添加到所有內容的超視圖中,以便在拖動時位於頂部。在doDrag中:您需要將視圖的位置移動到手勢的位置。最後,在stopDragging中:您需要將視圖添加到位於正確位置(滾動視圖或其他視圖)之上的視圖。

+0

非常詳細的答案。修復了我的實現中的一些問題。 – AWrightIV 2015-03-23 19:18:50