title: Splitting a touch sequence between multiple UIGestureRecognizer instances
body: <p>I'm developing an iPhone/iPad app that supports dragging items between table views. Since all the tables don't fit on screen, I've written a custom <code>UIScrollView</code> that lays them out horizontally, and supports paging.</p>
  
  <p>While I've gotten the primary drag and drop together, there are a few remaining issues I can't get past.</p>
  
  <ol>
  <li><p>After the user has selected an item to drag, and is dragging, they cannot scroll the <code>UIScrollView</code> to find the destination <code>UITableView</code>.</p></li>
  <li><p>Sometimes the user will want to drag the item <em>within</em> the same table view. But once the drag has begun, the table view no longer recognizes the scroll gesture.</p></li>
  </ol>
  
  <p>I've tried a variety of different options, including implementing a <code>UIGestureRecognizerDelegate</code> and allowing multiple gesture recognizers to recognize gestures simultaneously.</p>
  
  <p>The problem, as I see it stems from this description from the Event Handling Guide: "iOS recognizes one or more fingers touching the screen as part of a multitouch sequence. This sequence begins when the first finger touches down on the screen and ends when the last finger is lifted from the screen."</p>
  
  <p><code>UIGestureRecognizer</code> instances always match against the entire <em>sequence</em>. In my case, I want to split a single sequence down into discrete gestures -- some touches recognize a dragging of an item, while different touches within the same sequence should be recognized as a swipe or scroll gesture. Effectively, I want my gesture recognizers to recognize simultaneously, but only <em>different</em> touches. Once one recognizes a touch as part of a gesture, that touch should be ignored by the others.</p>
  
  <p>I haven't found a way to solve all these issues coherently using the default <code>UIGestureRecognizer</code> subclasses, and am now about to write my own custom mutli-part gesture recognizer.</p>
  
  <p>I'd rather not have to though -- is there any more appropriate way to achieve the same result?</p>