Как назначить 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, чтобы вы могли попытаться передать вектор селекторов, которые вы хотели бы ответить в контроллере.