Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

UISwipeGestureRecognizerDirection em diagonal (duas direções)

Fala, galera! Estou com um pequeno problema para resolver:

Tenho uma webView e preciso executar uma ação quando faço um swipe com o dedo na webView. Se eu arrasto o meu dedo para a esquerda ou para direito, funciona perfeitamente. O problema é que quase sempre usamos o telefone com uma só mão então quando usamos a mão direita para fazer o swipe para a esquerda, acabamos fazendo um movimento como um para-brisas de um carro: De cima para baixo e da direita para esquerda. Aí é que vem o problema: Quando faço isso, a webView é "arrastada" para baixo e não executa a ação de swipe para a esquerda. Gostaria de saber como tratar esse tipo de problema.

Já setei

self.webView?.scrollView.scrollEnabled = false
self.webView?.scrollView.panGestureRecognizer.enabled = false;
self.webView?.scrollView.bounces = false;

mas não funcionou.

Alguma luz?

2 respostas

Fala aí Mayck, blz?

Cara não sei se eu entendi muito bem sua dúvida mas pelo que vi, ao fazer o swipe da direita para esquerda não está rolando certo?

Fiz a mesma configuração que você:

self.webView?.scrollView.scrollEnabled = false
self.webView?.scrollView.panGestureRecognizer.enabled = false;
self.webView?.scrollView.bounces = false;

Da uma olhada no meu código e veja se te ajuda:

//
//  ViewController.swift
//  TesteWebView
//
//  Created by Nando on 11/11/16.
//  Copyright © 2016 Nando. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var webView: UIWebView!


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        let url =  URL(string: "http://alura.com.br")!
        let request = URLRequest(url: url)

        webView.loadRequest(request)

        let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(swipe(_:)))
        swipeLeft.direction = .left


        let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(swipe(_:)))
        swipeRight.direction = .right

        webView.addGestureRecognizer(swipeLeft)
        webView.addGestureRecognizer(swipeRight)

        webView.scrollView.isScrollEnabled = false
        webView.scrollView.panGestureRecognizer.isEnabled = false
        webView.scrollView.bounces = false

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    func swipe(_ sender: UISwipeGestureRecognizer) {



        if sender.direction == .right {
            print("right")
        }else{
            print("left")
        }



    }


}
solução!

Oi Fernando! Consegui resolver o problema setando um

webwiew.userInteractionEnabled = false

O que estava acontecendo é aquele efeito de "coil" que acontece nos scrolls em páginas web na webview, então isso atrapalhava o swipe.

Muito obrigado!