2012-03-22 1 views
1

저는 iOS5에서 일하고 있습니다. 분명히 scrollView.pinchGestureRecognizer를 사용하여 UIScrollView의 내부 집기 인식기를 제어하거나 적어도 억제 할 수 있어야합니다.iPhone iOS 확대/축소를 사용하면 UIRotationGestureRecognizer에서 UIScrollView를 작동시키는 방법은 무엇입니까?

그러나 내 코드가 작동하지 않는 것 같습니다. 인식기는 클래스를 대리자로 취급하지 않으며 회전 제스처 인식기가 실패 할 때까지 기다리지 않습니다. 회전 제스처를 우선 순위로 만들기 위해 무엇을 할 수 있습니까? 그 후에 꼬집음이 고려됩니까?

좀 더 정확히 말하자면, 나는 계속해서 회전하고 확대 된 뷰가 왼쪽 아래 모퉁이로 "화면에서 벗어났다"는 것입니다. 결코 다시는 볼 수 없습니다.

-(void)setup scrollViews 
{ 
     [tempScrollView.pinchGestureRecognizer requireGestureRecognizerToFail:rotationRecognizer]; 
     tempScrollView.pinchGestureRecognizer.delegate = self; 

     tempScrollView.maximumZoomScale = 4.0; 
     tempScrollView.minimumZoomScale = 0.25; 
//   
     tempScrollView.delegate = self; 
} 

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

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer 
{ 

    if([gestureRecognizer isEqual:rotationRecognizer]) 
    { 
     NSLog(@"Rotation gesture"); 
    }else { 
     NSLog(@"Other gesture: %@", [gestureRecognizer class]); 
    } 
    return YES; 

} 

    - (IBAction)rotateView:(id)sender { 

     if([sender isKindOfClass:[UIRotationGestureRecognizer class]]) 
     { 
      UIRotationGestureRecognizer* recognizer = sender; 

      float recognizerRotation = [recognizer rotation]; 
      CGAffineTransform transform = CGAffineTransformMakeRotation(recognizerRotation); 
    activeView.transform = transform; 

     } 

    } 

답변

0

은 지금까지 내가 아는 한, UIScrollViewpinchGestureRecognizer는 읽기 전용입니다. 그러나 UIScrollView의 하위 클래스를 만들고 addGestureRecognizer: 메서드를 재정 의하여 pinchGestureRecognizer을 비활성화 한 다음 사용자 정의 pinchGestureRecognizer을 추가 할 수 있습니다.

관련 문제