2011-08-04 7 views
3

私はユーザーがUIScrollViewの範囲外にスクロールすることを許可することができますか?範囲外のUIScrollViewを制御しますか?

+0

は、詳細は、次の質問を参照してください。 –

+0

ユーザーはいつものように私のuiscrollviewをスクロールすることができますが、uiscrollviewの範囲外にドラッグすると、uiscrollviewをスクロールします。 – Andrew

+0

UIScrollViewはデフォルトでこれを行いませんか? –

答えて

6

スーパービューのさまざまなUIViewメソッドからタッチイベントをスクロールビューに転送して、それが機能するかどうか確認できます。例えば:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [scrollView touchesBegan:touches withEvent:event]; 
} 
// etc 

それともスーパーにUIPanGestureRecognizerを使用して試してみて、明示的にパンイベントを取得するときにオフセットスクロールビューを設定できます。例えば:

- (void)handlePan:(UIPanGestureRecognizer *)pan 
{ 
    scrollView.contentOffset = [pan translationInView:scrollView]; 
} 
// Or something like that. 
+0

右のときに「スロースクロールアニメーションを取得するには厳しいものになることができます"スクロールビュー。つまり、 '[pan velocityInView:pan.view]'が0でないときです。 – johnboiles

3

UIScrollViewをサブクラス化し、UIScrollViewは、その範囲外のタッチを拾うようにhitTest:withEvent:をオーバーライドしてみます。このような何か:

@interface MagicScrollView : UIScrollView 
@end 

@implementation MagicScrollView 

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 
    // Intercept touches 100pt outside this view's bounds on all sides 
    if (CGRectContainsPoint(CGRectInset(self.bounds, -100, -100), point)) { 
     return self; 
    } 
    return nil; 
} 

@end 

あなたはまた、あなたのレイアウトに応じて、UIScrollViewのスーパーにpointInside:withEvent:をオーバーライドする必要があります。私はあなたが何を意味するか理解していないinteraction beyond bounds of uiview

関連する問題