私はライブラリ内の画像をページングするために使用するUIScrollViewコントローラから派生したビューを持っています。それはうまく動作します。UIScrollViewにUIViewを渡して渡すことができません。
右側のUIViewをオーバーレイして、画像リストをすばやくスクロールできるようにしました。私の問題は、タッチを 'super'または 'nextResponder'のいずれかに渡すと、下のUIScrollViewオブジェクトに決して移動しないということです。
私の質問は、私が処理する必要のないタッチを扱うために、下のUIScrollViewを強制的に下に置くことができますか? 0.3秒間タイマーを設定していますが、その間にすべてのタッチがUIScrollViewに渡されて処理されます。したがって、ユーザーがページをめくるためにスワイプジェスチャーを開始した場合、それが起こります。ここで
はtouchesBeganメソッドのコードです:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event];
// Start a timer to trigger the display of the slider and the processing of events.
touchesTimer = [NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(showSlider:) userInfo:nil repeats:NO];
// Where are we at right now?
UITouch *touch = [touches anyObject];
CGPoint currentPoint = [touch locationInView:self.view];
lastPage = [self page:currentPoint.y];
// Pass the event though until we need it.
// [self.nextResponder touchesBegan:touches withEvent:event];
if ([touch.view isKindOfClass:[UIScrollView class]])
{
if (self.nextResponder != nil &&
[self.nextResponder respondsToSelector:@selector(touchesEnded:withEvent:)])
{
[self.nextResponder touchesEnded:touches withEvent:event];
}
}
}
私は何が間違っている可能性があるかを考え出したかもしれないと思います。右側のスライダは画面全体をカバーしないため、touchイベントの座標は正しくありません。ビューのサイズを大きくし、タッチ位置でフィルタリングするつもりです。 – Sophtware
今年のWWDCでは、高度なスクロールビュー技術について優れたプレゼンテーションが行われました。あなたはそれを見て1時間を過ごすことをお勧めします。この状況であなたにとって大きな助けになるかもしれません。ビデオは、iTunesの「iTunes」セクションまたはアップルの開発者サイトからiTunesで入手できます。 –