2013-07-16 1 views
1

시나리오의 크기를 조정하는 데 사용되는 터치 조작이 있습니다. 여기에는 터치 조작이 시작되고 touchesEnded에서 끝나야합니다. 것은 사용자가 손가락을 드래그하고 있기 때문에 touchesEnd가 다른 UI View에있을 수 있다는 것입니다. I "는 * 전역 청취자를 touchesEnded 등록 방법은?Touch Up Inside 용 전역 이벤트 핸들러

답변

5

당신은 UIPanGestureRecognizer를 사용해야합니다.이 트리거 때마다, 제스처 인식기의 state을 확인합니다.이 뷰가 먼저 접촉되는 다음 UIGestureRecognizerStateBegan을 있다면, 그것은 다음 UIGestureRecognizerStateChanged을인지 사용자가 손가락을 움직이면 UIGestureRecognizerStateEnded이면 사용자가 손가락을 뗍니다.

제스처가 뷰에서 시작되는 한 뷰의 경계를 벗어난 후에도 계속 취소됩니다 (취소하지 않는 한) "글로벌화"에 대해 걱정할 필요가 없음

제스처 인식기를 다음으로 초기화하십시오.

UIPanGestureRecognizer *dragViewGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handleDragView:)]; 
dragViewGestureRecognizer.maximumNumberOfTouches = 1; 
[yourView addGestureRecognizer:dragViewGestureRecognizer]; 

그런 다음 당신이 필요로하는 코드를 다음과 같은 방법을 작성 :

- (void)handleDragView:(UIPanGestureRecognizer*)panGestureRecognizer { 
    switch (panGestureRecognizer.state) { 
     case UIGestureRecognizerStateBegan: { 
      //Code when dragging starts 
      break; 
     } case UIGestureRecognizerStateChanged: { 
      //Code while dragging is happening (if needed) 
      break; 
     } case UIGestureRecognizerStateEnded: { 
      //Code when dragging ends 
      break; 
     } 
     default: 
      break; 
    } 
} 
+0

즉 중대하다! 손가락이 현재있는 UIView를 어떻게 얻을 수 있습니까? – user2453876

+0

제스처 핸들러를 추가 한 뷰 (위 코드의 'yourView')에 초기 터치가 "캡처 됨"인 경우에만 이벤트가 트리거됩니다. 동일한 메소드에 액세스하는 여러보기에 여러 제스처 제어기가있는 경우,'handleDragView :'메소드에서'panGestureRecognizer.view'에 액세스하여 이벤트를 트리거 한보기를 얻을 수 있습니다. – Ander

관련 문제