SwipesViewController.m
上传用户:jjjjag8
上传日期:2017-04-17
资源大小:1443k
文件大小:3k
源码类别:

iPhone

开发平台:

MultiPlatform

  1. //
  2. //  SwipesAppDelegate.m
  3. //  Swipes
  4. //
  5. //  Created by Jeff LaMarche on 8/2/08.
  6. //  Copyright __MyCompanyName__ 2008. All rights reserved.
  7. //
  8. #import "SwipesViewController.h"
  9. @implementation SwipesViewController
  10. @synthesize label;
  11. @synthesize gestureStartPoint;
  12. - (void)eraseText
  13. {
  14. label.text = @"";
  15. }
  16. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
  17. // Return YES for supported orientations
  18. return (interfaceOrientation == UIInterfaceOrientationPortrait);
  19. }
  20. - (void)didReceiveMemoryWarning {
  21. [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
  22. // Release anything that's not essential, such as cached data
  23. }
  24. - (void)dealloc {
  25. [label release];
  26. [super dealloc];
  27. }
  28. #pragma mark -
  29. - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
  30. UITouch *touch = [touches anyObject];
  31. gestureStartPoint = [touch locationInView:self.view];
  32. }
  33. - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
  34. SwipeType swipeType = kNoSwipe;
  35. for (UITouch *touch in touches) {
  36. CGPoint currentPosition = [touch locationInView:self.view];
  37. CGFloat deltaX = fabsf(currentPosition.x - gestureStartPoint.x);
  38. CGFloat deltaY = fabsf(currentPosition.y - gestureStartPoint.y);
  39. if (deltaX >= kMinimumGestureLength && deltaY <= kMaximumVariance)
  40. swipeType = kHorizontalSwipe;
  41. else if (deltaY >= kMinimumGestureLength && deltaX <= kMaximumVariance)
  42. swipeType = kVerticalSwipe;
  43. }
  44. BOOL allFingersFarEnoughAway = YES;
  45. if (swipeType != kNoSwipe) {
  46. for (UITouch *touch in touches) {
  47. CGPoint currentPosition = [touch locationInView:self.view];
  48. CGFloat distance;
  49. if (swipeType == kHorizontalSwipe)
  50. distance = fabsf(currentPosition.x - gestureStartPoint.x);
  51. else
  52. distance = fabsf(currentPosition.y - gestureStartPoint.y);
  53. if (distance < kMinimumGestureLength)
  54. allFingersFarEnoughAway = NO;
  55. }
  56. }
  57. if (allFingersFarEnoughAway && swipeType != kNoSwipe)
  58. {
  59. NSString *swipeCountString= nil;
  60. if ([touches count] == 2)
  61. swipeCountString = @"Double ";
  62. else if ([touches count] == 3)
  63. swipeCountString = @"Triple ";
  64. else if ([touches count] == 4)
  65. swipeCountString = @"Quadruple ";
  66. else
  67. swipeCountString = @"";
  68. NSString *swipeTypeString = (swipeType == kHorizontalSwipe) ? @"Horizontal" : @"Vertical";
  69. NSString *message = [[NSString alloc] initWithFormat:@"%@%@ Swipe Detected.", swipeCountString, swipeTypeString];
  70. label.text = message;
  71. [message release];
  72. [self performSelector:@selector(eraseText) withObject:nil afterDelay:2];
  73. }
  74. }
  75. @end