2013-03-06 3 views
1

Я хочу удалить жест пользовательского распознавателя для просмотра изображений. Это вращение одного пальца от токаря.выборочное удаление пользовательского распознавателя жестов

-(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"); 
} 

Я звоню его в закладке пользовательских плитки

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

где rotationToggle является статическим внутр.

Как удалить только один распознаватель жестов. Текущий метод удаляет все распознаватели в представлении изображения. если я делаю только [imgView removeGestureRecognizer: вращать]; OR [self.mainImgView removeGestureRecognizer: вращать];

Не работает. Заранее спасибо. Дайте мне знать, если я забыл кое-что упомянуть здесь.

+0

Plz игнорируют обработку – CalZone

ответ

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

Благодаря кучу Tap Жест! кто это сделал. – CalZone

Смежные вопросы