2015-08-14 13 views
5

Ho una visualizzazione Web nella mia app.Gesto di scorrimento per back/forward in UIWebView?

Poiché si tratta di un'applicazione a schede, non sono in grado di aggiungere pulsanti per tornare indietro nel sito.

Voglio andare avanti/indietro facendo scorrere. Scorri verso destra dal lato sinistro/bordo è tornato ... come nel browser Safari per iOS.

Come posso farlo? Penso che dovrei usare "Screen Edge Pan Gesture Recognizer", giusto?

risposta

3

Perché non utilizzare semplicemente un rilevatore di gesti di scorrimento?

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

Grazie per la risposta. Dove mettere questo codice? Sotto [super viewDidLoad]; in ViewController.m? –

+0

sì, è possibile aggiungere questo nel tuo viewdidload. Prego. Se funziona, assicurati di accettare la risposta :) – mKane

+0

Sì, per causa accetterò, se funziona. –

10

risposta accettata a 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

risposta a Swift 3 & Swift 4

Se qualcuno continua ad avere problemi. Questo ha funzionato per me:

Trova "didFinish" e aggiungi/sostituisci il seguente codice.

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

Il codice principale necessario è solo una riga. Viene fornito dopo lo self.didFinish() ma è ancora compreso tra parentesi nello {}.

webView.allowsBackForwardNavigationGestures = true