2015-03-31 16 views
6

Wydaje się, że WatchKit reference nie wspomina o tym. Czy coś przeoczyłem? A może nie jest możliwe wykonanie gestu drżenia w aplikacji Apple Watch?Jak wdrożyć gesty shake w aplikacji Apple Watch?

Poniżej jest typowym przykładem realizacji wstrząśnięcie na iOS:

// MARK: Gestures 
override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent) { 
    if(event.subtype == UIEventSubtype.MotionShake) { 
     // do something 
    } 
} 
+0

Możesz użyć coreMotion, aby uzyskać ruch. Buduję to [proste opakowanie] (https://github.com/ezefranca/WatchShaker) na moim Githubie. –

Odpowiedz

4

Nie, to nie jest możliwe, aby zrobić coś mających do czynienia z UIEvent sw WatchKit teraz, ze obecne rozwiązanie w " remoured UI ", w którym głównie po prostu powiesz obserwującemu, jak używać ułożonego interfejsu z storyboardu i reagujesz na takie akcje, jak naciskanie przycisku lub wiersza tabeli. Będzie wsparcie dla znacznie większej ilości kodu uruchamianego na zegarku jeszcze w tym roku, według Apple.

Aktualizacja: Rodzime aplikacje są teraz dostępne dla systemu watchOS 2. Ta funkcja może być obecna.

+1

W WWDC ogłosili, że jest to teraz możliwe w wersji beta Watch OS 2. –

1

Jest to teraz możliwe w Watch OS2 z CMMotionManager częścią CoreMotion.

Możesz mieć to obejście.

let motionManager = CMMotionManager() 
if (motionManager.accelerometerAvailable) { 
    let handler:CMAccelerometerHandler = {(data: CMAccelerometerData?, error: NSError?) -> Void in 

     if (data!.acceleration.z > 0) { 
      // User did shake 
     } 
    } 
    motionManager.startAccelerometerUpdatesToQueue(NSOperationQueue.currentQueue()!, withHandler: handler) 
} 
+0

Widzę stałą 0, aby wykryć drżenie. Czy ta liczba jest odpowiednia do użytku w świecie rzeczywistym? –

+0

@FullDecent tak to działa w moim projekcie, ponieważ acceleration.z zwraca wartość (-), gdy zegarek znajduje się w normalnych pozycjach, gdy wykonujesz ruch przyśpieszający przyspieszenie.z (+) lub większy od zera. – Roger

0

Jak Roger mówi, rozwiązaniem jest użycie CoreMotion.

Możesz użyć coreMotion, aby uzyskać ruch. Buduję ten simple wrapper na moim Githubie.

Powiązane problemy