2015-03-31 3 views
0

UINavigationControllerDelegate имеет только 2 метода делегирования использовать:методы UINavigationControllerDelegate не достаточно

  • navigationController:willShowViewController:
  • navigationController:didShowViewController:

Но что, если я хочу назвать, когда я совать ViewController в интерактивном режиме с использованием жест? Что-то вроде:

  • navigationController:willStartDragging:
  • navigationController:isDraggingWithPercentage:

Там нет методов делегирования, как это в протоколе. Как я могу получить эти методы?

ответ

1

Вы можете добавить цель/действия для навигации диспетчерское interactivePopGestureRecognizer так:

[navigationController.interactivePopGestureRecognizer addTarget:self action:@selector(handleInteractivePop:)]; 

А потом следить за состоянием жеста

- (void)handleInteractivePop:(UIScreenEdgePanGestureRecognizer *)recognizer { 
    switch (recognizer.state) { 
     case UIGestureRecognizerStateBegan: 
      // Started Dragging 
      break; 

     case UIGestureRecognizerStateChanged: 
      CGFloat percentComplete = [recognizer locationInView:yourView].x/yourView.frame.size.width; 
      // Do something 
      break; 

     case UIGestureRecognizerStateEnded: 
      // Released 
      break; 

     default: 
      break; 
    } 
} 
Смежные вопросы