본문 바로가기

□컴퓨터 관련/★iPhone Developer

[아이폰 개발]Swipe 기능


스와이프 기능에 대해 간략히 적어보겠습니다.
ㄴ 이런식은 좀더 생각하면 답이 나올거 같습니다.
간단하게 좌우, 상하 정도입니다.

소스코드입니다.

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{   
    UITouch *touch = [touches anyObject];
    _gestureStartPos = [touch locationInView:self.view];
 
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
 
{    
    UITouch *touch = [touches anyObject];
    CGPoint curEndPos = [touch locationInView:self.view];
    
    CGFloat deltaX = fabsf(_gestureStartPos.x - curEndPos.x);
    CGFloat deltaY = fabsf(_gestureStartPos.y - curEndPos.y);

    
    if(deltaX >= kMinGestureLength && deltaY <= kMaxVariance)
    {
        if(_gestureStartPos.x < curEndPos.x)
            _messageLabel.text = @"Left -> Right Horizontal swipe detected";
 
        else
 
            _messageLabel.text = @"Right -> Left Horizontal swipe detected";
 

        [self performSelector:@selector(eraseText) withObject:nil afterDelay:2];
 
    }
    else if(deltaY >= kMinGestureLength && deltaX <= kMaxVariance)
    {
        if(_gestureStartPos.y < curEndPos.y)
            _messageLabel.text = @"Up -> Down Vertical swipe detected";
 
        else
 
            _messageLabel.text = @"Down -> Up Vertical swipe detected";
 
 
        [self performSelector:@selector(eraseText) withObject:nil afterDelay:2];
 
    }
}

- (void) eraseText
{
    _messageLabel.text = @"";
 
}

 
_gestureStartPos는 CGPoint로 전역선언 해주었습니다. 
_messageLabel는 UILabel입니다. IBOutlet으로 연결해주면 되겠네요. 
kMinGestureLength는 스와이프 길이입니다. 100정도 주었구요.  
kMaxVariance는 편차입니다. 5정도 주었습니다.