Created
October 16, 2013 02:23
-
-
Save sooop/7001698 to your computer and use it in GitHub Desktop.
체크 마크를 인식하는 UIGestureRecognizer 서브클래스
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import <UIKit/UIGestureRecognizerSubclass.h> | |
// Implemented in your custom subclass | |
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { | |
[super touchesBegan:touches withEvent:event]; | |
if ([touches count] != 1) { | |
self.state = UIGestureRecognizerStateFailed; | |
return; | |
} | |
} | |
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { | |
[super touchesMoved:touches withEvent:event]; | |
if (self.state == UIGestureRecognizerStateFailed) return; | |
UIWindow *win = [self.view window]; | |
CGPoint nowPoint = [touches.anyObject locationInView:win]; | |
CGPoint nowPoint = [touches.anyObject locationInView:self.view]; | |
CGPoint prevPoint = [touches.anyObject previousLocationInView:self.view]; | |
// strokeUp is a property | |
if (!self.strokeUp) { | |
// On downstroke, both x and y increase in positive direction | |
if (nowPoint.x >= prevPoint.x && nowPoint.y >= prevPoint.y) { | |
self.midPoint = nowPoint; | |
// Upstroke has increasing x value but decreasing y value | |
} else if (nowPoint.x >= prevPoint.x && nowPoint.y <= prevPoint.y) { | |
self.strokeUp = YES; | |
} else { | |
self.state = UIGestureRecognizerStateFailed; | |
} | |
} | |
} | |
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { | |
[super touchesEnded:touches withEvent:event]; | |
if ((self.state == UIGestureRecognizerStatePossible) && self.strokeUp) { | |
self.state = UIGestureRecognizerStateRecognized; | |
} | |
} | |
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { | |
[super touchesCancelled:touches withEvent:event]; | |
self.midPoint = CGPointZero; | |
self.strokeUp = NO; | |
self.state = UIGestureRecognizerStateFailed; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment