2015-03-31 155 views
6

WatchKit reference似乎沒有提及它。我錯過了什麼嗎?或者是否真的無法在Apple Watch應用程序中實現搖動手勢?如何在Apple Watch應用程序中實現搖動手勢?

以下是擺動姿態實現對iOS的一個典型的例子:

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

您可以使用coreMotion來獲取移動。 我在我的Github上構建這個[簡單封裝](https://github.com/ezefranca/WatchShaker)。 – 2017-12-13 12:55:39

回答

4

不,這是不可能做到具有UIEvent S IN WatchKit做,現在,與當前解決方案的任何東西「遠程用戶界面「的方法,您大多隻是告訴手錶如何使用故事板中的預先安排的用戶界面,並對點擊按鈕或表格行等操作做出反應。蘋果公司表示,今年晚些時候將會有更多的代碼運行在手錶上。

更新:本地應用現在是可能的watchOS 2.該功能可以存在。

+1

在WWDC上,他們宣佈現在可以在Watch OS 2測試版中使用。 – 2015-06-12 05:02:30

1

這是現在可以在觀看OS2與CMMotionManager CoreMotion的一部分。

你可以有這樣的解決方法。

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

我在這裏看到一個常數爲0來檢測抖動。這個數字是否適合現實世界的使用? – 2015-11-04 23:44:29

+0

@FullDecent是的,它在我的項目中工作,因爲加速度.z返回( - )當手表處於正常位置的值,當你做搖動加速度.z返回(+)值或大於零。 – Roger 2016-01-06 10:18:21

0

Roger如何說,解決方法是使用CoreMotion。

您可以使用coreMotion得到運動。我在Github上構建了這個simple wrapper

相關問題