使用滑动手势更改iOS视图/视图控制器

10

我该如何实现滑动手势来切换视图?

到目前为止,我见过的最好的例子是Soundcloud应用程序,但我无法弄清楚如何使它起作用。


1
你到目前为止尝试了哪些方法?哪些方法奏效了,哪些没有奏效? - Sergey Grischyov
UIPageViewController 可以处理滑动和视图转换。 - pkamb
4个回答

12

与Swift 5兼容

override func viewDidLoad()
{
    super.viewDidLoad()

    let leftSwipe = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipes(_:)))
    let rightSwipe = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipes(_:)))
    
    leftSwipe.direction = .left
    rightSwipe.direction = .right

    view.addGestureRecognizer(leftSwipe)
    view.addGestureRecognizer(rightSwipe)
}

@objc func handleSwipes(_ sender: UISwipeGestureRecognizer)
{
    if sender.direction == .left
    {
       print("Swipe left")
       // show the view from the right side
    }

    if sender.direction == .right
    {
       print("Swipe right")
       // show the view from the left side
    }
}

如果您不介意的话,可以看一下我的滑动手势问题..它与更改数据有关,我不知道如何实现。https://stackoverflow.com/questions/59116225/how-can-i-implement-swipe-left-and-right-to-change-data-views-in-swift-ios - Newbie

10

使用此代码...

override func viewDidLoad() {
    super.viewDidLoad()

    var swipeRight = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:")
    swipeRight.direction = UISwipeGestureRecognizerDirection.Right
    self.view.addGestureRecognizer(swipeRight)


}

func respondToSwipeGesture(gesture: UIGestureRecognizer) {

    if let swipeGesture = gesture as? UISwipeGestureRecognizer {

        switch swipeGesture.direction {

        case UISwipeGestureRecognizerDirection.Right:

            println("Swiped right")

//change view controllers

    let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)

        let resultViewController = storyBoard.instantiateViewControllerWithIdentifier("StoryboardID") as ViewControllerName

        self.presentViewController(resultViewController, animated:true, completion:nil)    



        default:
            break
        }
    }
}

2
您可以将UISwipeGestureRecognizer添加到您的UIView中,并为此手势添加一个目标和一个操作,以在手势发生时执行。
 var swipeGesture = UISwipeGestureRecognizer(target: self, action: "doSomething")
 myView.addGestureRecognizer(swipeGesture)

 func doSomething() {

    // change your view's frame here if you want        
 }

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接