Управлять UIScrollView за пределами? - PullRequest
3 голосов
/ 04 августа 2011

Мне интересно, как я могу позволить пользователю прокручивать пределы UIScrollView?

Ответы [ 2 ]

6 голосов
/ 04 августа 2011

Вы можете попробовать переслать сенсорные события из различных методов 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.
4 голосов
/ 08 декабря 2015

Попробуйте создать подкласс 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

Вам также может понадобиться переопределить pointInside:withEvent: в суперпредставлении UIScrollView, в зависимости от вашего макета.

См. Следующий вопрос для получения дополнительной информации: взаимодействие за пределами видимости

...