2015-08-14 3 views
5

У меня есть WebView в моем приложении.Проведите пальцем по спине/вперед в UIWebView?

Поскольку это приложение с вкладками, я не могу добавить кнопки для возврата/пересылки на веб-сайт.

Я хочу вернуться/вперед, проверив. Правильный салфетки с левой стороны/края снова ... как в браузере Safari для iOS.

Как я могу это сделать? Я думаю, что я должен использовать «Recognizer Gesture Screen Edge Pan», верно?

ответ

3

Почему бы не просто использовать распознаватель жестов?

UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)]; 
UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)]; 

// Setting the swipe direction. 
[swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft]; 
[swipeRight setDirection:UISwipeGestureRecognizerDirectionRight]; 

// Adding the swipe gesture on WebView 
[webView addGestureRecognizer:swipeLeft]; 
[webView addGestureRecognizer:swipeRight]; 

- (void)handleSwipe:(UISwipeGestureRecognizer *)swipe { 

if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) { 
    NSLog(@"Left Swipe"); 
} 

if (swipe.direction == UISwipeGestureRecognizerDirectionRight) { 
    NSLog(@"Right Swipe"); 
} 

} 
+0

Благодарим вас за ответ. Где поставить этот код? В разделе [super viewDidLoad]; в ViewController.m? –

+0

yes Вы можете добавить это в свой viewdload. Пожалуйста. Если он работает, обязательно примите ответ :) – mKane

+0

Да, из-за этого я соглашусь, если это сработает. –

10

Принимается ответ на Swift 3:

override func viewDidLoad() { 
    super.viewDidLoad() 

    let swipeLeftRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipe(recognizer:))) 
    let swipeRightRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipe(recognizer:))) 
    swipeLeftRecognizer.direction = .left 
    swipeRightRecognizer.direction = .right 

    webView.addGestureRecognizer(swipeLeftRecognizer) 
    webView.addGestureRecognizer(swipeRightRecognizer) 
} 

@objc private func handleSwipe(recognizer: UISwipeGestureRecognizer) { 
    if (recognizer.direction == .left) { 
     if webView.canGoForward { 
      webView.goForward() 
     } 
    } 

    if (recognizer.direction == .right) { 
     if webView.canGoBack { 
      webView.goBack() 
     } 
    } 
} 
0

Ответ на Swift 3 & Swift 4

Если кто-то до сих пор проблемы. Это сработало для меня:

Найти "didFinish" и добавить/заменить следующий код.

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { 
    self.didFinish() 
    webView.allowsBackForwardNavigationGestures = true 
} 

Главный код, который вам нужен, - это всего лишь одна строка. Он приходит после self.didFinish(), но все еще в скобках {}.

webView.allowsBackForwardNavigationGestures = true