Swift - UISwipeGestureRecognizer Innerhalb Von UIScrollView

Ich glaube ich habe eine Lösung gefunden aber es ist in Obj-C und ich bin ganz neu & verwirrt in der Interpretation dieses in Swift: Horizontale UISwipeGestureRecognizer in Untersicht von UIScrollView ? (UIScrollView nur Bedürfnisse zu erkennen, vertikales scrollen)

Habe ich meinen Main.storyboard fügt zwei sub-Ansichten, in denen ich Blättern kann horizontal zwischen Ihnen. Aktuell, up-und down-Bewegungen werden erkannt, aber nicht die linken und rechten aufgrund der UIScrollView. Abhilfe diese Störungen?

Main.storyboard:

//Global
let vc0 = ViewController0(nibName: "ViewController0", bundle: nil)
let vc1 = ViewController1(nibName: "ViewController1", bundle: nil)

class ViewController: UIViewController, UIScrollViewDelegate, UIGestureRecognizerDelegate {

@IBOutlet weak var scrollView: UIScrollView!

override func viewDidLoad() {
    super.viewDidLoad()

    self.addChildViewController(vc0)
    self.scrollView.addSubview(vc0.view)
    vc0.didMoveToParentViewController(self)

    var frame1 = vc1.view.frame
    frame1.origin.x = self.view.frame.size.width
    vc1.view.frame = frame1

    self.addChildViewController(vc1)
    self.scrollView.addSubview(vc1.view)
    vc1.didMoveToParentViewController(self)

    self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width * 2, self.view.frame.size.height - 66)
    self.scrollView.delegate = self

    //Swipe Gesture Recognizers
    let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.respondToSwipeGesture(_:)))
    swipeRight.direction = UISwipeGestureRecognizerDirection.Right
    let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.respondToSwipeGesture(_:)))
    swipeLeft.direction = UISwipeGestureRecognizerDirection.Left
    let swipeUp = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.respondToSwipeGesture(_:)))
    swipeUp.direction = UISwipeGestureRecognizerDirection.Up
    let swipeDown = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.respondToSwipeGesture(_:)))
    swipeDown.direction = UISwipeGestureRecognizerDirection.Down

    swipeRight.delegate = self
    swipeLeft.delegate = self

    self.view.addGestureRecognizer(swipeRight)
    self.view.addGestureRecognizer(swipeLeft)
    self.view.addGestureRecognizer(swipeUp)
    self.view.addGestureRecognizer(swipeDown)
}

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    return true
}

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
    return true
}

//Debugging - Only Up & Down Swipes Are Detected
func respondToSwipeGesture(gesture: UIGestureRecognizer) {
    if let swipeGesture = gesture as? UISwipeGestureRecognizer {
        switch swipeGesture.direction {
        case UISwipeGestureRecognizerDirection.Right:
            print("Swiped right")
        case UISwipeGestureRecognizerDirection.Down:
            print("Swiped down")
        case UISwipeGestureRecognizerDirection.Left:
            print("Swiped left")
        case UISwipeGestureRecognizerDirection.Up:
            print("Swiped up")
        default:
            break
        }
    }
}
}
InformationsquelleAutor theflarenet | 2016-04-29
Schreibe einen Kommentar