2016-06-14 60 views

回答

7

爲了讓您的接口控制器的crownDidRotate電話,你不得不採用WKCrownDelegate協議在接口控制器,並設置接口控制器爲crownSequencerdelegate

要獲得crownDidRotate呼叫在其它的類,採用該類中WKCrownDelegate協議,並設置類的實例作爲的delegate你的接口控制器的crownSequencer

想必你已經有一些這樣的代碼來設置SpriteKit場景:

class InterfaceController: WKInterfaceController { 

    @IBOutlet var spriteGizmo: WKInterfaceSKScene! 

    override func awake(withContext context: AnyObject?) { 
     super.awake(withContext: context) 

     let scene = MyScene(fileNamed: "MyScene") 
     spriteGizmo.presentScene(MyScene(fileNamed: "MyScene")) 
    } 
} 

如果你已經聲明WKCrownDelegate符合您的MyScene類,只需添加一條線,將其設置爲的委託接口控制器的冠序:

let scene = MyScene(fileNamed: "MyScene") 
spriteGizmo.presentScene(MyScene(fileNamed: "MyScene")) 
crownSequencer.delegate = scene 

(或者,你可以通過設置在故事板的WKInterfaceSKScene的場景在這種情況下,你仍然可以從你的接口引用WKInterfaceSKScene。控制器與IBOutlet。然後在awake(withContext:),您可以通過該出口進入現場,並設置爲冠代表)

0

在watchOS 3只是任何物體對象可以將其設定爲一個代表獲得數字樹冠事件:

let crownSequencer = WKExtension.shared().rootInterfaceController!.crownSequencer 
crownSequencer.delegate = self 
crownSequencer.focus() 

然後通過實現回讀值:

func crownDidRotate(_ crownSequencer: WKCrownSequencer?, rotationalDelta: Double) 

重要的是要調用focus(),特別是對控制器,其UI適應屏幕,不需要實際的滾動。