2013-03-06 30 views
1

我想要将自定义识别器的手势移除到图像视图。这是来自kerby turner的一个手指轮换。有选择地删除自定义手势识别器

-(void) enableRotation{ 
[[self mainImageView] setUserInteractionEnabled:YES]; 
[self addRotationGestureToView:[self mainImageView]]; 
    //[self addTapGestureToView:[self mainImageView] numberOfTaps:1]; 
} 

- (void)addTapGestureToView:(UIView *)view numberOfTaps:(NSInteger)numberOfTaps 
{ 
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)]; 
[tap setNumberOfTapsRequired:numberOfTaps]; 
[view addGestureRecognizer:tap]; 
} 

- (void)addRotationGestureToView:(UIView *)view 
{ 
NSLog(@"'Adding KT Rotation recognizer to the rotation"); 
KTOneFingerRotationGestureRecognizer *rotation = [[KTOneFingerRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotating:)]; 
[view addGestureRecognizer:rotation]; 
} 


- (void)rotating:(KTOneFingerRotationGestureRecognizer *)recognizer 
{ 
UIView *view = [recognizer view]; 
[view setTransform:CGAffineTransformRotate([view transform], [recognizer rotation])]; 
} 


- (void)removeRotationGestureFromView: (UIImageView *) imgView { 
//UIRotationGestureRecognizer *rotate = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationRemoved:)]; 
//[imgView removeGestureRecognizer:rotate]; 
KTOneFingerRotationGestureRecognizer *rotation = [[KTOneFingerRotationGestureRecognizer alloc] init]; 


while(self.mainImageView.gestureRecognizers.count){ 
    [self.mainImageView removeGestureRecognizer:[self.mainImageView.gestureRecognizers objectAtIndex:0]]; 
    //[self.mainImageView removeGestureRecognizer:rotation]; 
} 
NSLog(@"Trying to remove rotation on this gesture"); 
} 

我定制tile标签

if(rotationToggle%2==0){ 
      [self enableRotation]; 
      NSLog(@"%d", rotationToggle); 
     } 
     else{ 
      [self removeRotationGestureFromView:self.mainImageView]; 
          NSLog(@"%d", rotationToggle); 
     } 
     rotationToggle +=1; 

其中rotationToggle是静态INT调用它。

如何删除只有一个手势识别器。当前方法删除图像视图中的所有识别器。如果我只是 [imgView removeGestureRecognizer:rotate]; 或 [self.mainImgView removeGestureRecognizer:rotate];

它不起作用。提前致谢。让我知道,如果我忘记在这里提到的东西。

+0

PLZ忽略双击手势操作 – CalZone 2013-03-06 23:06:01

回答

2

您正在创建新手势的实例并尝试删除该手势,而不是删除之前添加的手势。保留前一个参考并删除该参考。

对于如: -

@property (nonatomic, strong) KTOneFingerRotationGestureRecognizer *rotation; 

- (void)addRotationGestureToView:(UIView *)view 
{ 
    self.rotation = [[KTOneFingerRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotating:)]; 
    [view addGestureRecognizer:rotation]; 
} 

- (void)removeRotationGestureFromView:(UIImageView *)imgView { 
    [self.mainImageView removeGestureRecognizer:self.rotation]; 
} 
+1

感谢一大堆!它做到了。 – CalZone 2013-03-06 23:55:22