迅速UIGestureRecogniser跟随

我正在使用Swift制作iOS8应用程序。 我希望用户能够使用手势来揭示界面的某些部分。 因此,例如,用户将手指向上滑动,手指向上滑动的视线沿着手指移动,从而露出另一个视图。

我想要的是一个手势来给出类似于通知框的结果,你可以从屏幕的顶部拉下来。 我一直在看文件,我似乎无法find一个合适的手势。

我看到一个名为UISwipeGestureRecogniser的,但唯一的问题是,它不跟随你的手指,当我滑动手指时,它只是运行一个函数。

以下是文档页面: https : //developer.apple.com/documentation/uikit/uigesturerecognizer

您正在寻找UIPanGestureRecognizer 。 你会在这里find苹果文档。

这里是一个示例处理程序,将用您的手指移动视图。 在Interface Builder中 ,将UIPanGestureRecognizer添加到您想要拖动的视图。 将ViewController设置为您的ViewController 。 将操作设置为此操作:

Swift 2.X:

 @IBAction func handlePan(gestureRecognizer: UIPanGestureRecognizer) { if gestureRecognizer.state == .Began || gestureRecognizer.state == .Changed { let translation = gestureRecognizer.translationInView(self.view) // note: 'view' is optional and need to be unwrapped gestureRecognizer.view!.center = CGPointMake(gestureRecognizer.view!.center.x + translation.x, gestureRecognizer.view!.center.y + translation.y) gestureRecognizer.setTranslation(CGPointMake(0,0), inView: self.view) } } 

Swift 3:

 @IBAction func handlePan(_ gestureRecognizer: UIPanGestureRecognizer) { if gestureRecognizer.state == .began || gestureRecognizer.state == .changed { let translation = gestureRecognizer.translation(in: self.view) // note: 'view' is optional and need to be unwrapped gestureRecognizer.view!.center = CGPoint(x: gestureRecognizer.view!.center.x + translation.x, y: gestureRecognizer.view!.center.y + translation.y) gestureRecognizer.setTranslation(CGPoint.zero, in: self.view) } } 

当然,你可以通过编程来添加UIPanGestureRecognizer

ViewController viewDidLoad中,创build识别器并将其添加到您希望能够拖动的视图中:

  let gestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(handlePan)) self.someDraggableView.addGestureRecognizer(gestureRecognizer) 

跟跟踪手指运动一样,你并不是真的认识到手势。

尝试将视图控制器设置为在视图中触摸一下,然后开始跟踪手指的移动,直到触摸起来。