2013-03-06 8 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"); 
} 

나는 사용자 정의 타일 탭 rotationToggle 정적 int이며

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

에 전화 해요.

어떻게 제스처 인식기를 하나만 제거 할 수 있습니까? 현재 메서드는 이미지보기에서 모든 인식자를 제거합니다. 내가 단지하는 경우 [imgView removeGestureRecognizer : rotate]; 또는 [self.mainImgView removeGestureRecognizer : rotate];

작동하지 않습니다. 미리 감사드립니다. 여기에 뭔가를 언급하는 걸 깜빡했는지 알려주세요.

+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

덕분에 무리를 처리 탭 제스처를 무시! 그게 그랬어. – CalZone

관련 문제