Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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 检测';向上';UIScrollView中的UI手势_Ios_Swift_Uiscrollview_Uigesturerecognizer - Fatal编程技术网

Ios 检测';向上';UIScrollView中的UI手势

Ios 检测';向上';UIScrollView中的UI手势,ios,swift,uiscrollview,uigesturerecognizer,Ios,Swift,Uiscrollview,Uigesturerecognizer,我在我的应用程序中有一个自定义的segue连接到一个按钮,当点击按钮时,它会将我的视图向下滚动到另一个视图。我需要实现segue的展开,并希望在用户在第二个视图的UIScrollView顶部向上滑动时发生 这是我的segue代码: override func perform() { var MainVCView = self.sourceViewController.view as UIView! var CreditVCView = self.destinationViewC

我在我的应用程序中有一个自定义的segue连接到一个按钮,当点击按钮时,它会将我的视图向下滚动到另一个视图。我需要实现segue的展开,并希望在用户在第二个视图的
UIScrollView
顶部向上滑动时发生

这是我的segue代码:

override func perform() {

    var MainVCView = self.sourceViewController.view as UIView!
    var CreditVCView = self.destinationViewController.view as UIView!

    let screenWidth = UIScreen.mainScreen().bounds.size.width
    let screenHeight = UIScreen.mainScreen().bounds.size.height

    CreditVCView.frame = CGRectMake(0.0, screenHeight, screenWidth, screenHeight)

    let window = UIApplication.sharedApplication().keyWindow
    window?.insertSubview(CreditVCView, aboveSubview: MainVCView)


    // Transition.
    UIView.animateWithDuration(1.0, animations: { () -> Void in
        MainVCView.frame = CGRectOffset(MainVCView.frame, 0.0, -screenHeight)
        CreditVCView.frame = CGRectOffset(CreditVCView.frame, 0.0, -screenHeight)

        }) { (Finished) -> Void in
            self.sourceViewController.presentViewController(self.destinationViewController as! UIViewController, animated: false, completion: nil)
    }
}
我已经实现了手势识别器,但是当它设置为“向上”或“向下”时,我无法让它检测到刷卡。它仅在设置为“左”或“右”时工作

代码如下:

@IBOutlet weak var scrollView: UIScrollView!

override func viewDidLoad() {
    super.viewDidLoad()

    let unwindSwipe = UISwipeGestureRecognizer(target: self, action: "unwind")
    unwindSwipe.direction = UISwipeGestureRecognizerDirection.Down
    view.addGestureRecognizer(unwindSwipe)
    view.userInteractionEnabled = true
    scrollView.canCancelContentTouches = true

    // Do any additional setup after loading the view.
}

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

func unwind() {
    println("Test")
}
正如你所看到的,我尝试了一些方法,但我就是无法让它检测到这个手势


有什么想法吗?

在屏幕上添加滑动手势

override func viewDidLoad() {
    super.viewDidLoad()

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

    var swipeup = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:")
    swipeup.direction = UISwipeGestureRecognizerDirection.up
    self.view.addGestureRecognizer(swipeup)
}

func respondToSwipeGesture(gesture: UIGestureRecognizer) {

    if let swipeGesture = gesture as? UISwipeGestureRecognizer {

        switch swipeGesture.direction {
        case UISwipeGestureRecognizerDirection.Right:
            println("Swiped right")
        case UISwipeGestureRecognizerDirection.up:
            println("Swiped up")
        default:
            break
        }
    }
}
并添加一条线来处理碰撞
scrollView.PangestureRecognitizer.RequiremegestureRecognitizerToFail(swipeGesture)

我看到您的代码中有一个scrollView,您是否试图使手势被识别以在其上工作?因为它将“仍然”滚动视图的动作是的,我正在尝试这样做,一旦用户滚动到滚动视图的顶部,他们可以再次向上滑动,它将切换回另一个视图。你需要实现一个为什么来监视滚动视图的位置,当它到达顶部时,你可以切换到另一个视图。另一个想法是截取手势,如果速度大于某个值,则执行segue,并滚动其较小值的视图。