Подтвердить что ты не робот

Swift UIGestureRecogniser следует пальцем

Я делаю приложение iOS8 с помощью Swift. Я хотел бы, чтобы пользователь мог использовать жесты, чтобы выявить определенные части интерфейса. Так, например, пользователь скользит пальцем вверх, и вид, который они скользят пальцем, движется в сторону, следуя пальцем, чтобы открыть другое представление внизу.

Я хочу, чтобы это был результат, похожий на окно уведомления, которое вы можете вывести из верхней части экрана. Я смотрел документацию, и я не могу найти подходящий жест.

Я видел один под названием UISwipeGestureRecogniser, но единственная проблема в том, что он не следует за вашим пальцем, он просто запускает функцию, когда я нажимаю палец вверх/вниз.

Здесь страница документации: https://developer.apple.com/documentation/uikit/uigesturerecognizer

4b9b3361

Ответ 1

Вы ищете UIPanGestureRecognizer. Здесь вы найдете документацию Apple .

Здесь обработчик образца, который перемещает представление пальцем. В Interface Builder добавьте UIPanGestureRecognizer в представление, которое вы хотите перетащить. Установите делегата на 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:

В viewDidLoad для вашего ViewController создайте распознаватель и добавьте его в представление, которое вы хотите перетащить:

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

Ответ 2

На самом деле вы не узнаете жест так же, как отслеживание движения пальца.

Попробуйте настроить контроллер вида, чтобы вызвать вызов при касании вниз в представлении и начать отслеживать движения пальцев до тех пор, пока не коснется.