DKPhotoPickerBrowserPhotoImageView.m 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. //
  2. // ZLPhotoPickerBrowserPhotoImageView.m
  3. // ZLAssetsPickerDemo
  4. //
  5. //
  6. #import "DKPhotoPickerBrowserPhotoImageView.h"
  7. @implementation DKPhotoPickerBrowserPhotoImageView
  8. - (id)initWithFrame:(CGRect)frame {
  9. if ((self = [super initWithFrame:frame])) {
  10. self.userInteractionEnabled = YES;
  11. // 监听手势
  12. [self addGesture];
  13. }
  14. return self;
  15. }
  16. - (id)initWithImage:(UIImage *)image {
  17. if ((self = [super initWithImage:image])) {
  18. self.userInteractionEnabled = YES;
  19. // 监听手势
  20. [self addGesture];
  21. }
  22. return self;
  23. }
  24. - (id)initWithImage:(UIImage *)image highlightedImage:(UIImage *)highlightedImage {
  25. if ((self = [super initWithImage:image highlightedImage:highlightedImage])) {
  26. self.userInteractionEnabled = YES;
  27. // 监听手势
  28. [self addGesture];
  29. }
  30. return self;
  31. }
  32. #pragma mark -监听手势
  33. - (void) addGesture{
  34. self.contentMode = UIViewContentModeScaleAspectFit;
  35. // 双击放大
  36. UITapGestureRecognizer *scaleBigTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
  37. scaleBigTap.numberOfTapsRequired = 2;
  38. scaleBigTap.numberOfTouchesRequired = 1;
  39. [self addGestureRecognizer:scaleBigTap];
  40. // 单击缩小
  41. UITapGestureRecognizer *disMissTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
  42. disMissTap.numberOfTapsRequired = 1;
  43. disMissTap.numberOfTouchesRequired = 1;
  44. [self addGestureRecognizer:disMissTap];
  45. // 只能有一个手势存在
  46. [disMissTap requireGestureRecognizerToFail:scaleBigTap];
  47. }
  48. - (void)handleSingleTap:(UITouch *)touch {
  49. if ([_tapDelegate respondsToSelector:@selector(imageView:singleTapDetected:)])
  50. [_tapDelegate imageView:self singleTapDetected:touch];
  51. }
  52. - (void)handleDoubleTap:(UITouch *)touch {
  53. if ([_tapDelegate respondsToSelector:@selector(imageView:doubleTapDetected:)])
  54. [_tapDelegate imageView:self doubleTapDetected:touch];
  55. }
  56. @end