当前位置: 代码迷 >> Iphone >> 判断上下拖动画面 iphone
  详细解决方案

判断上下拖动画面 iphone

热度:28   发布时间:2016-04-25 06:32:56.0
判断左右拖动画面 iphone

#define HORIZ_SWIPE_DRAG_MIN 100CGPoint mystartTouchPosition;BOOL isProcessingListMove;- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{	UITouch *touch = [touches anyObject];	CGPoint newTouchPosition = [touch locationInView:self.view];	if(mystartTouchPosition.x != newTouchPosition.x || mystartTouchPosition.y != newTouchPosition.y) {		isProcessingListMove = NO;	}	mystartTouchPosition = [touch locationInView:self.view];	[super touchesBegan:touches withEvent:event];}-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {	UITouch *touch = touches.anyObject;	CGPoint currentTouchPosition = [touch locationInView:self.view];		// If the swipe tracks correctly.	double diffx = mystartTouchPosition.x - currentTouchPosition.x + 0.1; // adding 0.1 to avoid division by zero	double diffy = mystartTouchPosition.y - currentTouchPosition.y + 0.1; // adding 0.1 to avoid division by zero		if(abs(diffx / diffy) > 1 && abs(diffx) > HORIZ_SWIPE_DRAG_MIN)	{		// It appears to be a swipe.		if(isProcessingListMove) {			// ignore move, we're currently processing the swipe			return;		}				if (mystartTouchPosition.x < currentTouchPosition.x) {			isProcessingListMove = YES;			[self moveToPreviousItem];			return;		}		else {			isProcessingListMove = YES;			[self moveToNextItem];			return;		}	}	else if(abs(diffy / diffx) > 1)	{		isProcessingListMove = YES;		[super touchesMoved:touches	withEvent:event];	}}-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {	isProcessingListMove = NO;	[super touchesEnded:touches withEvent:event];}
-(void)moveToPreviousItem{	NSLog(@"Move To Previous Item");}-(void)moveToNextItem{	NSLog(@"Move To Next Item");}

? 这里的isProcessingListMove 是一个BOOL布尔类型,mystartTouchPosition是CGPoint类型,可以用的!

  相关解决方案