2011-03-10 48 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