Как обнаружить Swipe Gesture в iOS?

В моем приложении для iPhone я должен распознать жест смахивания, сделанный пользователем на представлении.

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

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

Что должно быть сделано?

Как я узнаю это?

Ответ 1

Используйте UISwipeGestureRecognizer. Не намного больше сказать, что распознаватели жеста легко. Есть даже видео WWDC10 по этому вопросу. Сессии 120 и 121.:)

Ответ 2

Если вы знаете, как это работает, но все же нужен быстрый пример, вот он! (он будет полезен, по крайней мере, для меня, когда мне понадобится пример копирования-вставки, не пытаясь его запомнить)

UISwipeGestureRecognizer *mSwipeUpRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(doSomething)];

[mSwipeUpRecognizer setDirection:(UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown | UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight)];

[[self view] addGestureRecognizer:mSwipeUpRecognizer];

и в .h файле добавить:

<UIGestureRecognizerDelegate>

Ответ 4

Следующая ссылка ниже перенаправляет вас на видеоуроку, в которой объясняется, как обнаруживать удары на iPhone в Objective-C:

Учебное пособие UISwipeGestureRecognizer (обнаружение проверок на iPhone)

Пример кода ниже, чтобы достичь этого в Swift:

Для каждого направления необходимо иметь один UISwipeGestureRecognizer. Это немного странно, потому что свойство UISwipeGestureRecognizer.direction - это битовая маска в стиле параметров, но каждый распознаватель может обрабатывать только одно направление. Вы можете отправить их всем одному и тому же обработчику, если хотите, и отсортировать их там, или отправить их другим обработчикам. Здесь одна реализация:

override func viewDidLoad() {
    super.viewDidLoad()

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

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

func respondToSwipeGesture(gesture: UIGestureRecognizer) {

    if let swipeGesture = gesture as? UISwipeGestureRecognizer {

        switch swipeGesture.direction {
        case UISwipeGestureRecognizerDirection.Right:
            println("Swiped right")
        case UISwipeGestureRecognizerDirection.Down:
            println("Swiped down")
        default:
            break
        }
    }
}