Обнаружить жест 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.
б. если таймер не сработал (флаг все еще установлен), то вы выполняете действие и отменяете таймер.
Вы можете подумать об определении подкласса UISwipeGestureRecognizer для инкапсуляции всего этого поведения.