Как назначить UIGestureRecognizerDelegate для CKComponentController

Я использую следующий код для настройки UIPanGestureRecognizer в моем компоненте:

MyComponent *c =[super newWithView:{
  [UIView class],
  {
    {
      CKComponentGestureAttribute(
      [UIPanGestureRecognizer class],
      &setupPanRecognizer,
      @selector(panGesture:context:),
      {}
      )
    },
    {
      @selector(setUserInteractionEnabled:), @YES
    }
  }
  }
  component: [MyOtherComponent newOtherComponentWithMode:model context:context]];

Я обрабатываю panGesture:context в объекте MyComponentController.

Моя проблема в том что UIPanGestureRecognizer блокирует вид канала от прокрутки. Чтобы это исправить я хочу использовать UIGestureRecognizerDelegate протокол и позволяют одновременно работать распознавателям (просмотр с прокруткой и панорамированием).

У меня вопрос, как я могу назначить свой компонентный контроллер в качестве делегата для UIPanGestureRecognizer? setupPanRecognizer это просто C function и это не имеет ссылки на MyComponentController объект или даже сам компонент.

Единственный способ, которым я сейчас вижу, - это получить список распознавателей жестов где-то в didUpdateComponent метод в моем контроллере, найти правильный и назначить делегата там. Предоставляет ли ComponentKit какое-либо решение для этого?

1 ответ

CKComponentViewAttributeValue CKComponentGestureAttribute(Class gestureRecognizerClass,
                                                      CKComponentGestureRecognizerSetupFunction setupFunction,
                                                      CKComponentAction action,
                                                      CKComponentForwardedSelectors delegateSelectors)

Наконец, вы можете найти аргумент DelegateSelectors, чтобы вы могли попытаться передать вектор селекторов, которые вы хотели бы ответить в контроллере.

Другие вопросы по тегам