好吧,我有点困惑。
我有一个 UIScrollView 的子类,这是我尝试像 UI 元素一样水平滚动的“表格视图”。UIScrollView 本身设置了它在内部使用的 UIGestureRecognizers,并且它似乎将自己设置为那些 UIGestureRecognizers 的委托。我的水平表格元素/单元格上也有我自己的 UIGestureRecognizer 设置,我自己的类设置为我自己的 UIGestureRecognizer 的委托。由于我的类是 UIScrollView 的子类,因此在运行时,UIGestureRecognizer 委托调用会针对 UIScrollView 内置 UIGestureRecognizers 和我自己的 UIGestureRecognizers 进入我的类。有点像 PITA,但我们可以通过传递我们不关心的那些来解决这个问题。
-(BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]])
return NO;
else
{
if ([super respondsToSelector:@selector(gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:)])
return [super gestureRecognizer:gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:otherGestureRecognizer];
else
return NO;
}
}
问题是检查[super respondsToSelector:@selector()]
返回YES,但是当我实际调用它时,return [super gestureRecognizer:gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:otherGestureRecognizer];
我得到以下异常
2012-08-31 12:02:06.156 MyApp[35875:707]-[MyAppHorizontalImageScrollergestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]: 无法识别的选择器发送到实例 0x21dd50
我原以为它应该显示
-[UIScrollView 手势识别器:shouldRecognizeSimultaneouslyWithGestureRecognizer:]
但这可能没问题。但问题是它说它响应然后没有。
其他两个 UIGestureRecognizer 委托例程使用此代码(显然不同的选择器)。
感谢您的任何见解。