2009-03-27 11 views
3

私はライブラリ内の画像をページングするために使用する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]; 
    } 
} 
} 
+0

私は何が間違っている可能性があるかを考え出したかもしれないと思います。右側のスライダは画面全体をカバーしないため、touchイベントの座標は正しくありません。ビューのサイズを大きくし、タッチ位置でフィルタリングするつもりです。 – Sophtware

+2

今年のWWDCでは、高度なスクロールビュー技術について優れたプレゼンテーションが行われました。あなたはそれを見て1時間を過ごすことをお勧めします。この状況であなたにとって大きな助けになるかもしれません。ビデオは、iTunesの「iTunes」セクションまたはアップルの開発者サイトからiTunesで入手できます。 –

答えて

1

私は定期のUIViewControllerのではなくUIScrollViewControllerを使用して試してみて、あなたがそれを必要とするスクロールビューオブジェクトを追加し、より高速なスクロールを置くあなたが望む表示右側。このように、彼らは別々であり、接触は混乱しないでしょう。

をするUIViewでUIScrollViewの上部の幅と高さを作るの両方0(ビューはUIScrollViewの上に技術的にもはやであるように)とセット:ここ

0

は私のためによく働い簡単に解決策がありますclipsToBounds = NO(ビューの内容がUIScrollViewの上に表示されるように)。

self.OverlayView.clipsToBounds = NO; 
CGRect frame = self.OverlayView.frame; 
self.OverlayView.frame = CGRectMake(frame.origin.x, frame.origin.y, 0, 0); 

UIViewにインタラクティブコントロールが含まれている場合、これらのコントロールは機能しなくなります。 UIScrollViewの上にそれ自身のビューに移動する必要があります。

関連する問題