【发布时间】:2012-08-31 18:18:56
【问题描述】:
好吧,我有点困惑。
我有一个 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] -[MyAppHorizontalImageScroller gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]:无法识别的选择器发送到实例 0x21dd50
我认为它应该显示
-[UIScrollView 手势识别器:shouldRecognizeSimultaneouslyWithGestureRecognizer:]
但这可能没问题。但问题是它说它会响应然后没有响应。
另外两个 UIGestureRecognizer 委托例程使用此代码(显然不同的选择器)。
感谢您的任何见解。
【问题讨论】:
标签: objective-c delegates uigesturerecognizer super respondstoselector