迅速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)
跟跟踪手指运动一样,你并不是真的认识到手势。
尝试将视图控制器设置为在视图中触摸一下,然后开始跟踪手指的移动,直到触摸起来。