Jak wykryć gest machnięcia w iPhone SDK?

W mojej aplikacji na iPhone, wymagam, aby rozpoznać gest machnięcia wykonane przez użytkownika w widoku.

Chcę, aby gesty machnięcia były rozpoznawane i wykonywały funkcję machnięcia.

Potrzebuję, aby Widok przesuwał się poziomo i pokazywał inny widok, ponieważ użytkownik wykonuje gest machnięcia.

Co należy zrobić?

Jak to rozpoznać?

Wszelkie wskazówki lub tutoriale będą naprawdę mile widziane.

Author: Parth Bhatt, 2010-11-25

4 answers

Użyj UISwipeGestureRecognizer. Niewiele więcej do powiedzenia naprawdę, rozpoznawanie gestów są łatwe. Są WWDC10 filmy na ten temat nawet. Sesja 120 i 121. :)

 41
Author: jer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-25 17:57:38

Jeśli wiesz, jak to działa, ale nadal potrzebujesz szybkiego przykładu, oto jest! (stanie się przydatny przynajmniej dla mnie, kiedy będę potrzebował przykładu Kopiuj-Wklej, nie próbując go zapamiętać)

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

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

[[self view] addGestureRecognizer:mSwipeUpRecognizer];

I w .h file add:

<UIGestureRecognizerDelegate>
 45
Author: Guntis Treulands,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-08 12:41:52

Istnieje dokumentacja apple i próbki do rozpoznawania machnięcia patrz poniżej link;

Http://developer.apple.com/library/ios/#samplecode/SimpleGestureRecognizers/Introduction/Intro.html#//apple_ref/doc/uid/DTS40009460

 6
Author: Sri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-15 14:06:36

Poniższy link przekierowuje Cię do samouczka wideo, który wyjaśnia, jak wykrywać przesunięcia w telefonie iPhone w Objective-C:

UISwipeGestureRecognizer Tutorial (wykrywanie swipes na iPhone)

Przykładowy kod poniżej, aby to osiągnąć w Swift :

Musisz mieć po jednym UISwipeGestureRecognizer dla każdego kierunku. To trochę dziwne, ponieważ właściwość UISwipeGestureRecognizer.direction jest maską bitową w stylu opcji, ale każdy rozpoznawacz może obsługiwać tylko jeden kierunek. Możesz wysłać je wszystkie do tego samego opiekuna, jeśli chcesz, i posortować je tam, lub wysłać je do różnych opiekunów. Oto jedna implementacja:

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
        }
    }
}
 -1
Author: King-Wizard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-07 00:21:47