LoginSignup
10
9

More than 5 years have passed since last update.

watchOS 3 で追加された WKCrownSequencer でデジタルクラウンの状態を取得してみる

Last updated at Posted at 2016-06-16

※本記事は、一般に公開されている情報を元に作成しています

これは何

watchOS 3 で追加された WKCrownSequencer を使って、デジタルクラウンの状態(回転速度など)を取得する方法をメモします。

動作環境

  • Xcode 8.0 beta 1
  • watchOS 3.0 beta 1

実装

デジタルクラウンの状態は、 crownSequencer オブジェクトが保持しています。

WKInterfaceController のプロパティとして新たに

public var crownSequencer: WKCrownSequencer { get }

が追加されているので、自分でインスタンスを生成する必要はありません。

デリゲートセット

まずは、crownSequencer のデリゲートをセットしましょう。

class CrownDetailController: WKInterfaceController, WKCrownDelegate {
crownSequencer.delegate = self

この状態ではまだ crownSequencer にフォーカスが当たっていないため、focus() メソッドを呼ぶ必要があります。

override func willActivate() {
    super.willActivate()
    crownSequencer.focus()
}

これでデジタルクラウンの状態変化を受信可能になりました。

デリゲートメソッド

デジタルクラウンの状態が変化すると次のデリゲートメソッドが呼ばれます。

crownDidRotate

ユーザがデジタルクラウンを回転させた時に呼ばれます。

func crownDidRotate(WKCrownSequencer?, rotationalDelta: Double)

rotationalDelta にはデジタルクラウンの回転数?が返ってくるようです。

The amount that the crown has rotated since the last update. A value of 1.0 represents one full rotation. The value’s sign indicates the rotation’s direction, but the sign is adjusted based on the crown’s orientation. Positive values always indicate an upward scrolling gesture, while negative numbers indicate a downward scrolling gesture.

1.0 が 1回転したことを表し、上方向にスクロールするとプラスの値が、下方向にスクロールするとマイナスの値になるようです。

また、デジタルクラウンの回転速度は、WKCrownSequencerrotationsPerSecond プロパティで確認することもできます。

crownDidBecomeIdle

ユーザがデジタルクラウンの回転を止めた時に呼ばれます。

func crownDidBecomeIdle(WKCrownSequencer?)

また、デジタルクラウンが回転しているかどうかは、WKCrownSequencerisIdle プロパティで確認することもできます。

注意点

InterfaceController 上にスクロール可能なオブジェクトがある場合は少し注意が必要です。例えばWKInterfacePicker にフォーカスが当たった場合、WKCrownSequencer のフォーカスは外れます。再びフォーカスを当てるためには再度 focus() メソッドを呼ぶ必要があります。

リンク

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9