Включить прокрутку UIScrollView для определенного CGPoint на UISwipeGestureRecognizer

Я хочу включить прокрутку UIScrollView только тогда, когда я прокручиваю границы экрана. Я использую распознаватель жестов смахивания.

вот мой код

-(void)swipeHandlerLeft:(UISwipeGestureRecognizer *)swipeRecognizer
{
    CGRect screenRect = [[UIScreen mainScreen] bounds];
    CGFloat screenWidth = screenRect.size.width;

    point =  [swipeRecognizer locationInView:self.view];

    if(swipeRecognizer.direction == UISwipeGestureRecognizerDirectionLeft)
    {
        if (point.x > screenWidth - 10)
        {
            NSLog(@"Swipped Left");
            _scrollView.scrollEnabled = YES;
        }
        else
        {
            _scrollView.scrollEnabled = NO;
        }
    }

}

-(void)swipeHandlerRight:(UISwipeGestureRecognizer *)swipeRecognizer
{
    CGRect screenRect = [[UIScreen mainScreen] bounds];
    CGFloat screenWidth = screenRect.size.width;

    point =  [swipeRecognizer locationInView:self.view];

    if(swipeRecognizer.direction == UISwipeGestureRecognizerDirectionRight)
    {
        if (point.x < 10)
        {
            NSLog(@"Swipped Right");
            _scrollView.scrollEnabled = YES;
        }
        else
        {
            _scrollView.scrollEnabled = NO;
        }
    }    
}

Проблема с приведенным выше кодом заключается в том, что он работает до тех пор, пока прокрутка не будет включена, но как только она будет включена, эти методы не будут вызываться, и я думаю, что причина этого в том, что я добавил прокрутку внутри своего UIView.

любая помощь будет оценена.


person Vaibhav    schedule 28.01.2015    source источник


Ответы (2)


Внутри UIScrollView уже есть UIGestureRecognizer. Я думаю, вам нужно будет подключить свой код к этим распознавателям жестов. Вы можете получить к ним доступ с помощью myScrollView.panGestureRecognizer и myScrollView.pinchGestureRecognizer.

person Shamas S    schedule 28.01.2015
comment
Извините, что беспокою вас, но не могли бы вы продемонстрировать свою идею с небольшим демонстрационным кодом. - person Vaibhav; 28.01.2015

Ваш вид прокрутки улавливает ваше прикосновение перед просмотром прокрутки, и я полагаю, что распознаватель жестов пролистывания находится в супервизоре представления прокрутки.

Вы должны создать зависимость, вызвав requireGestureRecognizerToFail(_:) в распознавателе жестов панорамирования scrollView и передав жест смахивания.

person Crazyrems    schedule 28.01.2015