2015-08-14 7 views
5

Ich habe ein WebView in meiner App.Swipe Geste für zurück/vorwärts in UIWebView?

Da es sich um eine Anwendung mit Tabs handelt, kann ich keine Schaltflächen hinzufügen, um auf der Website vor- und zurückzugehen.

Ich möchte durch Wischen zurück/vorwärts gehen. Rechts wischen von der linken Seite/Kante ist zurück ... wie in Safari Browser für iOS.

Wie kann ich es tun? Ich denke, ich sollte "Bildschirm Edge Pan Gesture Recognizer" verwenden, richtig?

Antwort

3

Warum nicht einfach einen Wischgesten-Erkenner verwenden?

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

Vielen Dank für Ihre Antwort. Wohin mit diesem Code? Unter [super viewDidLoad]; in ViewController.m? –

+0

Ja, Sie können dies in Ihrem Viewdidload hinzufügen. Ihre Begrüßung. Wenn es funktioniert, sicher sein, die Antwort zu akzeptieren :) – mKane

+0

Ja, aus gutem Grund werde ich akzeptieren, wenn es funktioniert. –

10

akzeptierte Antwort in 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

Antwort in Swift 3 & Swift 4

Wenn jemand noch Probleme haben wird. Dies funktionierte für mich:

Suchen Sie "didFinish" und fügen Sie den folgenden Code hinzu oder ersetzen Sie ihn.

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

Der Hauptcode, den Sie benötigen, ist nur eine Zeile. Es kommt nach self.didFinish() aber immer noch innerhalb der {} Klammern.

webView.allowsBackForwardNavigationGestures = true