KDvoid CCScrollLayer::claimTouch ( CCTouch* pTouch )
{
	CCTouchDispatcher*	pDispatcher = CCDirector::sharedDirector ( )->getTouchDispatcher ( );
	CCArray*			pTargetedHandlers = pDispatcher->getTargetedHandlers ( );

	// Enumerate through all targeted handlers.
	CCObject*	pObject;
	CCARRAY_FOREACH ( pTargetedHandlers, pObject )
	{
		CCTargetedTouchHandler*		pHandler = (CCTargetedTouchHandler*) pObject;
		
		// Only our handler should claim the touch.
		if ( pHandler->getDelegate ( ) == this )
		{
			if ( !pHandler->getClaimedTouches ( )->containsObject ( pTouch ) )
			{
				pHandler->getClaimedTouches ( )->addObject ( pTouch );
			}
		}
		else
		{
			// Steal touch from other targeted delegates, if they claimed it.
			if ( pHandler->getClaimedTouches ( )->containsObject ( pTouch ) )
			{
				if ( pHandler->getDelegate ( ) )
				{
					pHandler->getDelegate ( )->ccTouchEnded ( pTouch, KD_NULL );
				}

				pHandler->getClaimedTouches ( )->removeObject ( pTouch );
			}
		}
	}