Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 用'向右滑动手势;手指控制';_Ios_Swift_Xcode_Swift3_Xcode9 Beta - Fatal编程技术网

Ios 用'向右滑动手势;手指控制';

Ios 用'向右滑动手势;手指控制';,ios,swift,xcode,swift3,xcode9-beta,Ios,Swift,Xcode,Swift3,Xcode9 Beta,我刚刚完成课程,目前正在学习Swift的基本知识 我想创建一个与目前最流行的应用程序非常相似的滑动手势。向右滑动可从左侧的另一个视图中显示内容,本质上是一个“后退”按钮,但需要一个手势 下面是我找到的一张我想要创建的手势图像: Apple的教程解释了“取消”按钮在导航控制器中的工作原理: //MARK: Navigation @IBAction func cancel(_ sender: UIBarButtonItem) { // Depending on style of p

我刚刚完成课程,目前正在学习Swift的基本知识

我想创建一个与目前最流行的应用程序非常相似的滑动手势。向右滑动可从左侧的另一个视图中显示内容,本质上是一个“后退”按钮,但需要一个手势

下面是我找到的一张我想要创建的手势图像:

Apple的教程解释了“取消”按钮在导航控制器中的工作原理:

    //MARK: Navigation

@IBAction func cancel(_ sender: UIBarButtonItem) {
    // Depending on style of presentation (modal or push presentation), this view controller needs to be dismissed in two different ways.
    let isPresentingInAddMealMode = presentingViewController is UINavigationController

    if isPresentingInAddMealMode {
        dismiss(animated: true, completion: nil)
    }
    else if let owningNavigationController = navigationController {
        owningNavigationController.popViewController(animated: true)
    }
    else {
        fatalError("The MealViewController is not inside a navigation controller.")
    }
}
因此(参考苹果的教程),我在“New Dine”控制器上放置了一个滑动手势识别器对象,并创建了我自己的“rightSwipe”功能,其功能与此完全相同:

    @IBAction func rightSwipe(_ sender: UISwipeGestureRecognizer) {

    // Depending on style of presentation (modal or push presentation), this view controller needs to be dismissed in two different ways.
    let isPresentingInAddMealMode = presentingViewController is UINavigationController

    if isPresentingInAddMealMode {
        dismiss(animated: true, completion: nil)
    }
    else if let owningNavigationController = navigationController {
        owningNavigationController.popViewController(animated: true)
    }
    else {
        fatalError("The MealViewController is not inside a navigation controller.")
    }

}
这非常有效,目前的应用程序足够聪明,可以识别您在视图中的“条目”(无论是通过点击列表中的现有项目还是通过“创建新项目”视图)

现在是否可以用手指控制动画,而不是在屏幕向右滑动后立即执行整个动作?这有点难以解释

只要我向右滑动,动画就会被执行,当前视图将被取消。在动画结束之前,我无法控制它。我无法用手指在屏幕上拖动“解雇”动画

我想解释的场景与在iOS主屏幕上切换页面的工作原理非常相似

我希望能够“按住”左侧的屏幕,能够在按住的同时将其向右拖动,并且应该能够在我这样做时看到上一个视图,然后在我放开后立即执行视图的实际转换。我希望你明白我的意思

如何做到这一点?目前是否有任何内置功能允许我这样做?有人能告诉我怎么做吗


我目前使用的是Swift 3,使用的是Xcode9 beta IDE

,当您在导航堆栈上按下视图控制器时,您应该可以免费获得这种滑动行为。我昨天的回答太快了,所以我把它删掉了。请解释为什么默认iOS行为对您不起作用/不够好。摘自问题本身:“只要我向右滑动,动画就会执行,当前视图将被取消。在动画结束之前,我无法控制它。我无法用手指在屏幕上拖动“解雇”动画。我想解释的场景与在iOS主屏幕上切换页面的工作原理非常相似。“我现在明白了。当然,当您从屏幕左边缘开始拖动时,您可以从iOS获得这种效果。我只是尝试了我先前的建议,但那不起作用,因为下面的视图不会显示出来;你只看到一个白色的背景。另外,你不会在导航栏上看到iOS那样的透明动画,所以如果它真的起作用的话,它看起来也会很糟糕。我的结论是你不能/不应该这样做。您必须使用自定义导航堆栈(您可能会找到一些)。你可能会浪费很多时间去做定制的东西。