控制UIScrollView外界?

And*_*rew 3 iphone objective-c uiscrollview bounds

我想知道如何让用户滚动到UIScrollView的边界之外?

Dan*_*son 6

您可以尝试将superview的各种UIView方法中的触摸事件转发到scrollview,看看是否可行.例如:

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

或者您可以尝试在superview上使用UIPanGestureRecognizer,并在获取pan事件时显式设置滚动视图偏移.例如:

- (void)handlePan:(UIPanGestureRecognizer *)pan
{
    scrollView.contentOffset = [pan translationInView:scrollView];
}
// Or something like that.
Run Code Online (Sandbox Code Playgroud)


joh*_*les 6

尝试子类化UIScrollView和 覆盖,hitTest:withEvent:以便UIScrollView拾取触及其边界之外。像这样的东西:

@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
Run Code Online (Sandbox Code Playgroud)

您可能还需要覆盖pointInside:withEvent:UIScrollView的上海华盈,这取决于你的布局。

有关更多信息,请参阅以下问题:interaction over bounds of uiview