Обнаружить жест Swipe в UIWebview

Я новичок в iPhone разработчик,

Я сделал epub reader и загрузил каждую страницу epub в свой webview

Что я хочу, это когда пользователь делает right swipe gesture Во второй раз я хочу перейти на новую страницу, я не хочу ничего делать, когда пользователь делает right swipe gesture в первый раз.

UISwipeGestureRecognizer *swipeRight

Есть ли способ что-то вроде,

if(swipeRight.touch.count > 2)
{
  // do this
}

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

Заранее спасибо!

РЕДАКТИРОВАТЬ

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
    float scrollViewHeight = scrollView.frame.size.height;
    float scrollContentSizeHeight = scrollView.contentSize.height;
    float scrollOffset = scrollView.contentOffset.y;

    if (scrollOffset == 0)
    {
        swipeUp = [[UISwipeGestureRecognizer alloc] initWithTarget:self  action:@selector(swipeLeftAction:)];
        swipeUp.direction = UISwipeGestureRecognizerDirectionUp;
        swipeUp.numberOfTouchesRequired=2;
        swipeUp.delegate = (id<UIGestureRecognizerDelegate>)self;
        swipeUp.cancelsTouchesInView=YES;
        [_webview addGestureRecognizer:swipeUp];  
    }
    else if (scrollOffset + scrollViewHeight == scrollContentSizeHeight)
    {
        swipeDown = [[UISwipeGestureRecognizer alloc] initWithTarget:self  action:@selector(swipeRightAction:)];
        swipeDown.direction = UISwipeGestureRecognizerDirectionDown;
        swipeDown.numberOfTouchesRequired=2;
        swipeDown.delegate = (id<UIGestureRecognizerDelegate>)self;
        swipeDown.cancelsTouchesInView=YES;
        [_webview addGestureRecognizer:swipeDown];

    }

4 ответа

Решение

Просто присоедините подкласс UIGestureRecognizer к этому представлению и удерживайте для вызовов...

UISwipeGestureRecognizer* rightSwipeRecognizer = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(someAction)];
rightSwipeRecognizer.numberOfTouchesRequired = 2;
rightSwipeRecognizer.direction = UISwipeGestureRecognizerDirectionRight;
rightSwipeRecognizer.cancelsTouchesInView = YES;
[self.webView addGestureRecognizer:rightSwipeRecognizer]; // add in your webviewrightSwipeRecognizer

Вы можете сообщить UIScrollView UIWebView, что его UIPanGestureRecognizer должен запускаться только в случае сбоя вашего собственного UISwipeGestureRecognizer.

Вот как вы это делаете:

UISwipeGestureRecognizer *rightSwipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeGesture:)];
UISwipeGestureRecognizer *leftSwipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeGesture:)];
rightSwipeGesture.direction = UISwipeGestureRecognizerDirectionRight;
leftSwipeGesture.direction = UISwipeGestureRecognizerDirectionLeft;
[self.view addGestureRecognizer:rightSwipeGesture];
[self.view addGestureRecognizer:leftSwipeGesture];

[_webView.scrollView.panGestureRecognizer requireGestureRecognizerToFail:rightSwipeGesture];
[_webView.scrollView.panGestureRecognizer requireGestureRecognizerToFail:leftSwipeGesture];

Это должно помочь вам.

Try like below it will help you
UISwipeGestureRecognizer *rightRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(rightSwipeHandle:)];
    rightRecognizer.direction = UISwipeGestureRecognizerDirectionRight;
    rightRecognizer.numberOfTouchesRequired = 2;
    [self.view addGestureRecognizer:rightRecognizer];
    [rightRecognizer release];

Я не думаю, что жесты смахивания предлагают поддержку для поведения, к которому вы стремитесь, но вы можете легко сделать это, выполнив следующие действия:

  1. при первом пролистывании установите флажок и запустите таймер; для остальных ничего не делать;

  2. на второй удар,

    а. если таймер сработал (при стрельбе таймер сбросил флаг), сделайте согласно пункту 1.

    б. если таймер не сработал (флаг все еще установлен), то вы выполняете действие и отменяете таймер.

Вы можете подумать об определении подкласса UISwipeGestureRecognizer для инкапсуляции всего этого поведения.

Другие вопросы по тегам