如何将UIGestureRecognizerDelegate分配给CKComponentController

时间:2015-11-27 10:08:01

标签: ios objective-c componentkit

我使用下一个代码在我的组件中设置UIPanGestureRecognizer:

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

我在MyComponentController对象中处理panGesture:context

我的问题是UIPanGestureRecognizer阻止了滚动的Feed视图。为了解决这个问题,我想使用UIGestureRecognizerDelegate协议并允许两个(滚动视图和我的平移)识别器同时工作。

我的问题是如何将我的组件控制器指定为UIPanGestureRecognizer的委托? setupPanRecognizer只是C function,它没有引用MyComponentController对象甚至组件本身。

我现在看到的唯一方法是在我的控制器的didUpdateComponent方法中获取手势识别器列表,找到正确的手势识别器并在那里分配代表。 ComponentKit是否为此提供了任何解决方案?

1 个答案:

答案 0 :(得分:1)

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

你可以在最后找到“delegateSelectors”参数,这样你就可以尝试传入一个你想在控制器中响应的选择器向量。