Как обнаружить Swipe Gesture в iOS? - PullRequest
34 голосов
/ 25 ноября 2010

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

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

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

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

Как мне это узнать?

Ответы [ 3 ]

44 голосов
/ 01 октября 2012

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

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

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

[[self view] addGestureRecognizer:mSwipeUpRecognizer];

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

<UIGestureRecognizerDelegate>
41 голосов
/ 25 ноября 2010

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

0 голосов
/ 08 мая 2015

Следующая ссылка ниже перенаправляет вас на видеоурок, в котором объясняется, как обнаруживать пролистывания на 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
        }
    }
}
...