OK、少し混乱しています。
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に送信されました
私はそれが表示されるべきだと思ったでしょう
-[UIScrollViewgestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]
しかし、それは大丈夫かもしれません。しかし、問題は、それが応答し、その後応答しないと言っていることです。
他の2つのUIGestureRecognizerデリゲートルーチンはこのコードで機能します(明らかに異なるセレクター)。
洞察をありがとう。