From 21d3023a9b7b6aff68c1170e345951396b1c6cfd Mon Sep 17 00:00:00 2001
From: 单军华
Date: Tue, 31 Jul 2018 13:35:21 +0800
Subject: [PATCH] no message

---
 screendisplay/screendisplay/Classes/Category/ThirdCategory/UIView+GestureCallback.m |  573 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 573 insertions(+), 0 deletions(-)

diff --git a/screendisplay/screendisplay/Classes/Category/ThirdCategory/UIView+GestureCallback.m b/screendisplay/screendisplay/Classes/Category/ThirdCategory/UIView+GestureCallback.m
new file mode 100755
index 0000000..cee1bb8
--- /dev/null
+++ b/screendisplay/screendisplay/Classes/Category/ThirdCategory/UIView+GestureCallback.m
@@ -0,0 +1,573 @@
+
+//  UIView+GestureCallback.h
+//
+//  Created by Onur Ersel on 01/07/15.
+//  Copyright (c) 2015 Onur Ersel. All rights reserved.
+//
+
+#import "UIView+GestureCallback.h"
+#import <objc/runtime.h>
+
+const NSString *UIView_GestureCallback_gesturesKey = @"UIView_GestureCallback_gesturesKey";
+const NSString *UIView_GestureCallback_gestureKeysHashKey = @"UIView_GestureCallback_gestureKeysHashKey";
+
+
+@implementation GestureCallbackValues
+@synthesize tapCallback, pinchCallback, panCallback, swipeCallback, rotationCallback, longPressCallback;
+@synthesize gesture, gestureId;
+@end
+
+
+@implementation UIView (GestureCallback)
+@dynamic gestures, gestureKeysHash;
+#pragma mark add tap gestures
+
+-(NSString*)addTapGestureRecognizer:(void(^)(UITapGestureRecognizer* recognizer, NSString* gestureId))tapCallback
+{
+    NSString *rand;
+    do {
+        rand = [self randomStringWithLength:12];
+    } while ([self.gestures objectForKey:rand] != nil);
+    
+    [self addTapGestureRecognizer:tapCallback tapGestureId:rand];
+    return rand;
+}
+
+-(NSString*)addTapGestureRecognizer:(void(^)(UITapGestureRecognizer* recognizer, NSString* gestureId))tapCallback  numberOfTapsRequired:(NSUInteger)numberOfTapsRequired  numberOfTouchesRequired:(NSUInteger)numberOfTouchesRequired
+{
+    NSString *rand;
+    do {
+        rand = [self randomStringWithLength:12];
+    } while ([self.gestures objectForKey:rand] != nil);
+    
+    [self addTapGestureRecognizer:tapCallback tapGestureId:rand numberOfTapsRequired:numberOfTapsRequired numberOfTouchesRequired:numberOfTouchesRequired];
+    return rand;
+}
+
+-(void)addTapGestureRecognizer:(void(^)(UITapGestureRecognizer* recognizer, NSString* gestureId))tapCallback  tapGestureId:(NSString*)tapGestureId
+{
+    [self addTapGestureRecognizer:tapCallback tapGestureId:tapGestureId numberOfTapsRequired:1 numberOfTouchesRequired:1];
+}
+
+-(void)addTapGestureRecognizer:(void(^)(UITapGestureRecognizer* recognizer, NSString* gestureId))tapCallback  tapGestureId:(NSString*)tapGestureId  numberOfTapsRequired:(NSUInteger)numberOfTapsRequired  numberOfTouchesRequired:(NSUInteger)numberOfTouchesRequired
+{
+    UIGestureRecognizer *r = [self.gestures objectForKey:tapGestureId];
+    if (r != nil) {
+        [self removeTapGesture:tapGestureId];
+    }
+    
+    UITapGestureRecognizer *tg = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapHandler:)];
+    tg.numberOfTapsRequired = numberOfTapsRequired;
+    tg.numberOfTouchesRequired = numberOfTouchesRequired;
+    
+    GestureCallbackValues *v = [GestureCallbackValues new];
+    v.gesture = tg;
+    v.tapCallback = tapCallback;
+    v.gestureId = tapGestureId;
+    
+    [self.gestureKeysHash setValue:v forKey:[NSString stringWithFormat:@"%lu", (unsigned long)v.gesture.hash]];
+    [self.gestures setValue:v forKey:tapGestureId];
+    [self addGestureRecognizer:tg];
+}
+
+#pragma mark remove tap gestures
+
+-(void)removeTapGesture:(NSString*)tapGestureId
+{
+    GestureCallbackValues *v = [self.gestures objectForKey:tapGestureId];
+    if (v != nil) {
+        [self.gestures removeObjectForKey:tapGestureId];
+        [self.gestureKeysHash removeObjectForKey:[NSString stringWithFormat:@"%lu", (unsigned long)v.gesture.hash]];
+        [self removeGestureRecognizer:v.gesture];
+    }
+}
+
+-(void)removeAllTapGestures
+{
+    NSArray *arr = self.gestures.allValues;
+    for (GestureCallbackValues *v in arr) {
+        if ([v.gesture isMemberOfClass:[UITapGestureRecognizer class]]) {
+            [self removeTapGesture:v.gestureId];
+        }
+    }
+}
+
+#pragma mark tap handler
+
+-(void)tapHandler:(UITapGestureRecognizer*)recognizer
+{
+    GestureCallbackValues *v = [self.gestureKeysHash objectForKey:[NSString stringWithFormat:@"%lu", (unsigned long)recognizer.hash]];
+    
+    if (v != nil) {
+        if (v.tapCallback != nil) {
+            v.tapCallback((UITapGestureRecognizer*)v.gesture, v.gestureId);
+        }
+    }
+}
+
+
+
+
+
+
+#pragma mark - ##### PINCH
+
+
+#pragma mark add pinch gestures
+
+-(NSString*)addPinchGestureRecognizer:(void(^)(UIPinchGestureRecognizer* recognizer, NSString* gestureId))pinchCallback
+{
+    NSString *rand;
+    do {
+        rand = [self randomStringWithLength:12];
+    } while ([self.gestures objectForKey:rand] != nil);
+    
+    [self addPinchGestureRecognizer:pinchCallback pinchGestureId:rand];
+    return rand;
+}
+
+-(void)addPinchGestureRecognizer:(void(^)(UIPinchGestureRecognizer* recognizer, NSString* gestureId))pinchCallback  pinchGestureId:(NSString*)pinchGestureId
+{
+    UIGestureRecognizer *r = [self.gestures objectForKey:pinchGestureId];
+    if (r != nil) {
+        [self removePinchGesture:pinchGestureId];
+    }
+    
+    UIPinchGestureRecognizer *tg = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchHandler:)];
+    
+    GestureCallbackValues *v = [GestureCallbackValues new];
+    v.gesture = tg;
+    v.pinchCallback = pinchCallback;
+    v.gestureId = pinchGestureId;
+    
+    [self.gestureKeysHash setValue:v forKey:[NSString stringWithFormat:@"%lu", (unsigned long)v.gesture.hash]];
+    [self.gestures setValue:v forKey:pinchGestureId];
+    [self addGestureRecognizer:tg];
+}
+
+
+#pragma mark remove pinch gestures
+
+-(void)removePinchGesture:(NSString*)pinchGestureId
+{
+    GestureCallbackValues *v = [self.gestures objectForKey:pinchGestureId];
+    if (v != nil) {
+        [self.gestures removeObjectForKey:pinchGestureId];
+        [self.gestureKeysHash removeObjectForKey:[NSString stringWithFormat:@"%lu", (unsigned long)v.gesture.hash]];
+        [self removeGestureRecognizer:v.gesture];
+    }
+}
+
+-(void)removeAllPinchGestures
+{
+    NSArray *arr = self.gestures.allValues;
+    for (GestureCallbackValues *v in arr) {
+        if ([v.gesture isMemberOfClass:[UIPinchGestureRecognizer class]]) {
+            [self removePinchGesture:v.gestureId];
+        }
+    }
+}
+
+#pragma mark pinch handler
+
+-(void)pinchHandler:(UIPinchGestureRecognizer*)recognizer
+{
+    GestureCallbackValues *v = [self.gestureKeysHash objectForKey:[NSString stringWithFormat:@"%lu", (unsigned long)recognizer.hash]];
+    
+    if (v != nil) {
+        if (v.pinchCallback != nil) {
+            v.pinchCallback((UIPinchGestureRecognizer*)v.gesture, v.gestureId);
+        }
+    }
+}
+
+
+
+
+
+
+#pragma mark - ##### PAN
+
+
+#pragma mark add pan gestures
+
+-(NSString*)addPanGestureRecognizer:(void(^)(UIPanGestureRecognizer* recognizer, NSString* gestureId))panCallback
+{
+    return [self addPanGestureRecognizer:panCallback minimumNumberOfTouches:1 maximumNumberOfTouches:NSUIntegerMax];
+}
+-(NSString*)addPanGestureRecognizer:(void(^)(UIPanGestureRecognizer* recognizer, NSString* gestureId))panCallback  minimumNumberOfTouches:(NSUInteger)minimumNumberOfTouches  maximumNumberOfTouches:(NSUInteger)maximumNumberOfTouches
+{
+    NSString *rand;
+    do {
+        rand = [self randomStringWithLength:12];
+    } while ([self.gestures objectForKey:rand] != nil);
+    
+    [self addPanGestureRecognizer:panCallback panGestureId:rand minimumNumberOfTouches:minimumNumberOfTouches maximumNumberOfTouches:maximumNumberOfTouches];
+    return rand;
+}
+
+-(void)addPanGestureRecognizer:(void(^)(UIPanGestureRecognizer* recognizer, NSString* gestureId))panCallback  panGestureId:(NSString*)panGestureId  minimumNumberOfTouches:(NSUInteger)minimumNumberOfTouches  maximumNumberOfTouches:(NSUInteger)maximumNumberOfTouches
+{
+    UIGestureRecognizer *r = [self.gestures objectForKey:panGestureId];
+    if (r != nil) {
+        [self removePanGesture:panGestureId];
+    }
+    
+    UIPanGestureRecognizer *tg = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panHandler:)];
+    tg.minimumNumberOfTouches = minimumNumberOfTouches;
+    tg.maximumNumberOfTouches = maximumNumberOfTouches;
+    
+    GestureCallbackValues *v = [GestureCallbackValues new];
+    v.gesture = tg;
+    v.panCallback = panCallback;
+    v.gestureId = panGestureId;
+    
+    [self.gestureKeysHash setValue:v forKey:[NSString stringWithFormat:@"%lu", (unsigned long)v.gesture.hash]];
+    [self.gestures setValue:v forKey:panGestureId];
+    [self addGestureRecognizer:tg];
+}
+
+
+#pragma mark remove pan gestures
+
+-(void)removePanGesture:(NSString*)panGestureId
+{
+    GestureCallbackValues *v = [self.gestures objectForKey:panGestureId];
+    if (v != nil) {
+        [self.gestures removeObjectForKey:panGestureId];
+        [self.gestureKeysHash removeObjectForKey:[NSString stringWithFormat:@"%lu", (unsigned long)v.gesture.hash]];
+        [self removeGestureRecognizer:v.gesture];
+    }
+}
+
+-(void)removeAllPanGestures
+{
+    NSArray *arr = self.gestures.allValues;
+    for (GestureCallbackValues *v in arr) {
+        if ([v.gesture isMemberOfClass:[UIPanGestureRecognizer class]]) {
+            [self removePanGesture:v.gestureId];
+        }
+    }
+}
+
+#pragma mark pan handler
+
+-(void)panHandler:(UIPanGestureRecognizer*)recognizer
+{
+    GestureCallbackValues *v = [self.gestureKeysHash objectForKey:[NSString stringWithFormat:@"%lu", (unsigned long)recognizer.hash]];
+    
+    if (v != nil) {
+        if (v.panCallback != nil) {
+            v.panCallback((UIPanGestureRecognizer*)v.gesture, v.gestureId);
+        }
+    }
+}
+
+
+
+
+
+#pragma mark - ##### SWIPE
+
+-(NSString*)addSwipeGestureRecognizer:(void(^)(UISwipeGestureRecognizer* recognizer, NSString* gestureId))swipeCallback  direction:(UISwipeGestureRecognizerDirection)direction
+{
+    return [self addSwipeGestureRecognizer:swipeCallback direction:direction numberOfTouchesRequired:1];
+}
+
+-(NSString*)addSwipeGestureRecognizer:(void(^)(UISwipeGestureRecognizer* recognizer, NSString* gestureId))swipeCallback  direction:(UISwipeGestureRecognizerDirection)direction  numberOfTouchesRequired:(NSUInteger)numberOfTouchesRequired
+{
+    NSString *rand;
+    do {
+        rand = [self randomStringWithLength:12];
+    } while ([self.gestures objectForKey:rand] != nil);
+    
+    [self addSwipeGestureRecognizer:swipeCallback swipeGestureId:rand direction:direction numberOfTouchesRequired:numberOfTouchesRequired];
+    return rand;
+}
+
+-(void)addSwipeGestureRecognizer:(void(^)(UISwipeGestureRecognizer* recognizer, NSString* gestureId))swipeCallback  swipeGestureId:(NSString*)swipeGestureId    direction:(UISwipeGestureRecognizerDirection)direction   numberOfTouchesRequired:(NSUInteger)numberOfTouchesRequired
+{
+    UIGestureRecognizer *r = [self.gestures objectForKey:swipeGestureId];
+    if (r != nil) {
+        [self removeSwipeGesture:swipeGestureId];
+    }
+    
+    UISwipeGestureRecognizer *tg = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeHandler:)];
+    tg.direction = direction;
+    tg.numberOfTouchesRequired = numberOfTouchesRequired;
+    
+    GestureCallbackValues *v = [GestureCallbackValues new];
+    v.gesture = tg;
+    v.swipeCallback = swipeCallback;
+    v.gestureId = swipeGestureId;
+    
+    [self.gestureKeysHash setValue:v forKey:[NSString stringWithFormat:@"%lu", (unsigned long)v.gesture.hash]];
+    [self.gestures setValue:v forKey:swipeGestureId];
+    [self addGestureRecognizer:tg];
+}
+
+
+#pragma mark remove swipe gestures
+
+-(void)removeSwipeGesture:(NSString*)swipeGestureId
+{
+    GestureCallbackValues *v = [self.gestures objectForKey:swipeGestureId];
+    if (v != nil) {
+        [self.gestures removeObjectForKey:swipeGestureId];
+        [self.gestureKeysHash removeObjectForKey:[NSString stringWithFormat:@"%lu", (unsigned long)v.gesture.hash]];
+        [self removeGestureRecognizer:v.gesture];
+    }
+}
+
+-(void)removeAllSwipeGestures
+{
+    NSArray *arr = self.gestures.allValues;
+    for (GestureCallbackValues *v in arr) {
+        if ([v.gesture isMemberOfClass:[UISwipeGestureRecognizer class]]) {
+            [self removeSwipeGesture:v.gestureId];
+        }
+    }
+}
+
+#pragma mark swipe handler
+
+-(void)swipeHandler:(UISwipeGestureRecognizer*)recognizer
+{
+    GestureCallbackValues *v = [self.gestureKeysHash objectForKey:[NSString stringWithFormat:@"%lu", (unsigned long)recognizer.hash]];
+    
+    if (v != nil) {
+        if (v.swipeCallback != nil) {
+            v.swipeCallback((UISwipeGestureRecognizer*)v.gesture, v.gestureId);
+        }
+    }
+}
+
+
+
+
+
+#pragma mark - ##### ROTATION
+
+
+#pragma mark add rotation gestures
+
+-(NSString*)addRotationGestureRecognizer:(void(^)(UIRotationGestureRecognizer* recognizer, NSString* gestureId))rotationCallback
+{
+    NSString *rand;
+    do {
+        rand = [self randomStringWithLength:12];
+    } while ([self.gestures objectForKey:rand] != nil);
+    
+    [self addRotationGestureRecognizer:rotationCallback rotationGestureId:rand];
+    return rand;
+}
+
+-(void)addRotationGestureRecognizer:(void(^)(UIRotationGestureRecognizer* recognizer, NSString* gestureId))rotationCallback  rotationGestureId:(NSString*)rotationGestureId
+{
+    UIGestureRecognizer *r = [self.gestures objectForKey:rotationGestureId];
+    if (r != nil) {
+        [self removeRotationGesture:rotationGestureId];
+    }
+    
+    UIRotationGestureRecognizer *tg = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationHandler:)];
+    
+    GestureCallbackValues *v = [GestureCallbackValues new];
+    v.gesture = tg;
+    v.rotationCallback = rotationCallback;
+    v.gestureId = rotationGestureId;
+    
+    [self.gestureKeysHash setValue:v forKey:[NSString stringWithFormat:@"%lu", (unsigned long)v.gesture.hash]];
+    [self.gestures setValue:v forKey:rotationGestureId];
+    [self addGestureRecognizer:tg];
+}
+
+
+#pragma mark remove rotation gestures
+
+-(void)removeRotationGesture:(NSString*)rotationGestureId
+{
+    GestureCallbackValues *v = [self.gestures objectForKey:rotationGestureId];
+    if (v != nil) {
+        [self.gestures removeObjectForKey:rotationGestureId];
+        [self.gestureKeysHash removeObjectForKey:[NSString stringWithFormat:@"%lu", (unsigned long)v.gesture.hash]];
+        [self removeGestureRecognizer:v.gesture];
+    }
+}
+
+-(void)removeAllRotationGestures
+{
+    NSArray *arr = self.gestures.allValues;
+    for (GestureCallbackValues *v in arr) {
+        if ([v.gesture isMemberOfClass:[UIRotationGestureRecognizer class]]) {
+            [self removeRotationGesture:v.gestureId];
+        }
+    }
+}
+
+#pragma mark rotation handler
+
+-(void)rotationHandler:(UIRotationGestureRecognizer*)recognizer
+{
+    GestureCallbackValues *v = [self.gestureKeysHash objectForKey:[NSString stringWithFormat:@"%lu", (unsigned long)recognizer.hash]];
+    
+    if (v != nil) {
+        if (v.rotationCallback != nil) {
+            v.rotationCallback((UIRotationGestureRecognizer*)v.gesture, v.gestureId);
+        }
+    }
+}
+
+
+
+
+
+#pragma mark - ##### LONG PRESS
+
+#pragma mark add longPress gestures
+
+-(NSString*)addLongPressGestureRecognizer:(void(^)(UILongPressGestureRecognizer* recognizer, NSString* gestureId))longPressCallback
+{
+    return [self addLongPressGestureRecognizer:longPressCallback numberOfTapsRequired:0 numberOfTouchesRequired:1 minimumPressDuration:0.5 allowableMovement:10];
+}
+
+-(NSString*)addLongPressGestureRecognizer:(void(^)(UILongPressGestureRecognizer* recognizer, NSString* gestureId))longPressCallback
+                     numberOfTapsRequired:(NSUInteger)numberOfTapsRequired
+                  numberOfTouchesRequired:(NSUInteger)numberOfTouchesRequired
+                     minimumPressDuration:(CFTimeInterval)minimumPressDuration
+                        allowableMovement:(CGFloat)allowableMovement
+{
+    NSString *rand;
+    do {
+        rand = [self randomStringWithLength:12];
+    } while ([self.gestures objectForKey:rand] != nil);
+    
+    [self addLongPressGestureRecognizer:longPressCallback longPressGestureId:rand numberOfTapsRequired:numberOfTapsRequired numberOfTouchesRequired:numberOfTouchesRequired minimumPressDuration:minimumPressDuration allowableMovement:allowableMovement];
+    return rand;
+}
+
+-(void)addLongPressGestureRecognizer:(void(^)(UILongPressGestureRecognizer* recognizer, NSString* gestureId))longPressCallback
+                  longPressGestureId:(NSString*)longPressGestureId
+                numberOfTapsRequired:(NSUInteger)numberOfTapsRequired
+             numberOfTouchesRequired:(NSUInteger)numberOfTouchesRequired
+                minimumPressDuration:(CFTimeInterval)minimumPressDuration
+                   allowableMovement:(CGFloat)allowableMovement
+{
+    UIGestureRecognizer *r = [self.gestures objectForKey:longPressGestureId];
+    if (r != nil) {
+        [self removeLongPressGesture:longPressGestureId];
+    }
+    
+    UILongPressGestureRecognizer *tg = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressHandler:)];
+    tg.numberOfTapsRequired = numberOfTapsRequired;
+    tg.numberOfTouchesRequired = numberOfTouchesRequired;
+    tg.minimumPressDuration = minimumPressDuration;
+    tg.allowableMovement = allowableMovement;
+    
+    GestureCallbackValues *v = [GestureCallbackValues new];
+    v.gesture = tg;
+    v.longPressCallback = longPressCallback;
+    v.gestureId = longPressGestureId;
+    
+    [self.gestureKeysHash setValue:v forKey:[NSString stringWithFormat:@"%lu", (unsigned long)v.gesture.hash]];
+    [self.gestures setValue:v forKey:longPressGestureId];
+    [self addGestureRecognizer:tg];
+}
+
+
+#pragma mark remove longPress gestures
+
+-(void)removeLongPressGesture:(NSString*)longPressGestureId
+{
+    GestureCallbackValues *v = [self.gestures objectForKey:longPressGestureId];
+    if (v != nil) {
+        [self.gestures removeObjectForKey:longPressGestureId];
+        [self.gestureKeysHash removeObjectForKey:[NSString stringWithFormat:@"%lu", (unsigned long)v.gesture.hash]];
+        [self removeGestureRecognizer:v.gesture];
+    }
+}
+
+-(void)removeAllLongPressGestures
+{
+    NSArray *arr = self.gestures.allValues;
+    for (GestureCallbackValues *v in arr) {
+        if ([v.gesture isMemberOfClass:[UILongPressGestureRecognizer class]]) {
+            [self removeLongPressGesture:v.gestureId];
+        }
+    }
+}
+
+#pragma mark longPress handler
+
+-(void)longPressHandler:(UILongPressGestureRecognizer*)recognizer
+{
+    GestureCallbackValues *v = [self.gestureKeysHash objectForKey:[NSString stringWithFormat:@"%lu", (unsigned long)recognizer.hash]];
+    
+    if (v != nil) {
+        if (v.longPressCallback != nil) {
+            v.longPressCallback((UILongPressGestureRecognizer*)v.gesture, v.gestureId);
+        }
+    }
+}
+
+
+
+
+
+
+#pragma mark - random string
+
+/*----------------------------------
+ *
+ *  A random string implementation from
+ *  http://stackoverflow.com/questions/2633801/generate-a-random-alphanumeric-string-in-cocoa
+ *
+ ---------------------------------*/
+
+
+-(NSString *) randomStringWithLength: (int) len {
+    const NSString *letters = @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+    
+    NSMutableString *randomString = [NSMutableString stringWithCapacity: len];
+    
+    for (int i=0; i<len; i++) {
+        [randomString appendFormat: @"%C", [letters characterAtIndex: arc4random_uniform((u_int32_t)[letters length])]];
+    }
+    
+    return randomString;
+}
+
+
+#pragma mark - getter/setters
+
+-(NSMutableDictionary *)gestures {
+    NSMutableDictionary *dict = objc_getAssociatedObject(self, &UIView_GestureCallback_gesturesKey);
+    
+    if (dict == nil) {
+        dict = [NSMutableDictionary new];
+        self.gestures = dict;
+    }
+    
+    return dict;
+}
+-(void) setGestures:(NSMutableDictionary *)value
+{
+    objc_setAssociatedObject(self, &UIView_GestureCallback_gesturesKey, value, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+}
+
+-(NSMutableDictionary *)gestureKeysHash {
+    NSMutableDictionary *dict = objc_getAssociatedObject(self, &UIView_GestureCallback_gestureKeysHashKey);
+    
+    if (dict == nil) {
+        dict = [NSMutableDictionary new];
+        self.gestureKeysHash = dict;
+    }
+    
+    return dict;
+}
+-(void) setGestureKeysHash:(NSMutableDictionary *)value
+{
+    objc_setAssociatedObject(self, &UIView_GestureCallback_gestureKeysHashKey, value, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+}
+
+//TODO : CustomGestureRecognizer
+@end

--
Gitblit v1.8.0