2017-09-24 1 views
0

ich eine watchkit App habe, die durch das SetzenWie die Digital-Krone zurück zu setzen mit watchOS arbeitet 4

crownSequencer.delegate = self 
crownSequencer.focus() 

Im wachen Methode meines Interface-Controller, ist die Umsetzung Nutzung der digitalen Krone macht:

class InterfaceController: WKInterfaceController, WKCrownDelegate 

In watchOS 3 my Delegatmethode gerade fein ausgeführt wurde:

// called when the crown rotates, rotationalDelta is the change since the last call (sign indicates direction). 
func crownDidRotate(_ crownSequencer: WKCrownSequencer?, rotationalDelta: Double) { 

    // do something important here... 
} 

nach dem Upgrade auf watchos4 Diese Funktionalität bricht. Eine einfache Neukompilierung und Konvertierung in Swift 4 hat nicht geholfen.

Antwort

2

ich dieses Problem durch einfaches Bewegen des crownSequencer Code an die willActivate Methode meiner Schnittstellen-Controller lösen könnte:

override func willActivate() { 
    ... 

    crownSequencer.delegate = self 
    crownSequencer.focus() 
} 

Es sieht für mich, dass etwas den Fokus in watchOS 4 stiehlt (vielleicht etwas zu dem spritekit bezogen Ich benutze?) Wenn Sie den Fokus zu früh einstellen.

Hoffen, das spart etwas Zeit für jemand anderen!

+0

Irgendeine Idee, wie man das Problem repliziert? Meine App funktioniert 90% der Zeit. Wenn die App gestartet wird, wird die Drehung der Krone gestoppt. Ich möchte es konsistent replizieren, bevor ich eine Reparatur einfüge, also weiß ich, dass es behoben ist. Frage mich, was der Auslöser ist. Auch fragen, ob didAppear ein besserer Ort wäre. Momentan habe ich es in wach(). – TPot

+0

Ja - didAppear ist definitiv besser, da wirdAppear nicht immer aufgerufen. Aber auch da merke ich das gleiche wie du beschrieben hast: In 10% hört es immer noch auf zu arbeiten: - / – Dirk

Verwandte Themen