2012-10-24 4 views
2

iPad 용 iOS 6 앱을 개발 중입니다. 제스처 인식 (줌, 핀치 및 팬)을 추가하는 UIImageView 하위 클래스를 개발했지만 문제점이 있습니다. 동시에 제스처를 인정하지 않습니다. 내가 처음으로 정상적인 UIImageView로 코드, 그리고 그것은 위대한,하지만 지금은 하위 클래스와 함께 일했다. 내 코드 :UIImageView 하위 클래스가 동시에 작동하지 않습니다.

image.m (있는 UIImageView의 서브 클래스)

image *img = [[image alloc] initWithImage:imatgetemporal];  
img.center = CGPointMake(525/2, 651/2); 


[[self.view viewWithTag:2] addSubview:img]; 

감사합니다 (I 동시에 여러 제스처에 응답하지 않는 이미지에서 이미지 뷰를 생성)

- (id)initWithImage:(UIImage *)image { 
self = [super initWithImage:image]; 

if (self) { 

    [self setMultipleTouchEnabled:YES]; 
    [self setUserInteractionEnabled:YES]; 

    UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panDetected:)]; 
    [super addGestureRecognizer:panRecognizer]; 

    UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchDetected:)]; 
    [super addGestureRecognizer:pinchRecognizer]; 

    UIRotationGestureRecognizer *rotationRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationDetected:)]; 
    [super addGestureRecognizer:rotationRecognizer]; 

    UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected:)]; 
    tapRecognizer.numberOfTapsRequired = 2; 
    [super addGestureRecognizer:tapRecognizer]; 

    NSLog(@"lkjlkj"); 
} 
return self;} 

- (void)panDetected:(UIPanGestureRecognizer *)panRecognizer { 
CGPoint translation = [panRecognizer translationInView:self.superview]; 
CGPoint imageViewPosition = self.center; 
imageViewPosition.x += translation.x; 
imageViewPosition.y += translation.y; 

self.center = imageViewPosition; 
[panRecognizer setTranslation:CGPointZero inView: self.superview];} 

    - (void)pinchDetected:(UIPinchGestureRecognizer *)pinchRecognizer{  

CGFloat scale = pinchRecognizer.scale; 
self.transform = CGAffineTransformScale(self.transform, scale, scale); 
pinchRecognizer.scale = 1.0;} 

- (void)rotationDetected:(UIRotationGestureRecognizer *)rotationRecognizer{ 
CGFloat angle = rotationRecognizer.rotation; 
self.transform = CGAffineTransformRotate(self.transform, angle); 
rotationRecognizer.rotation = 0.0;} 

- (void)tapDetected:(UITapGestureRecognizer *)tapRecognizer{ 
[UIView animateWithDuration:0.25 animations:^{ 
    self.center = CGPointMake(CGRectGetMidX(self.superview.bounds), CGRectGetMidY(self.superview.bounds)); 
    self.transform = CGAffineTransformIdentity; 
}];} 

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ 
return YES;} 

viewcontroller.m 모든!!

답변

5

난 당신이 그냥 선언 후 UIPanGestureRecognizer, UIPinchGestureRecognizer, UIRotationGestureRecognizer로하고 UITapGestureRecognizer에 동일한 대리자를 추가하여 해결할 수있는 것 같아요. 코드는 다음과 같습니다 :

tapRecognizer.delegate = self; 
pinchRecognizer.delegate = self; 
rotationRecognizer.delegate = self; 
tapRecognizer.delegate = self; 

희망이 있습니다.

관련 문제