如何让 Digital Crown 恢复与 watchOS 4 配合使用

问题描述 投票:0回答:2

我有一个手表套件应用程序,可以通过设置来使用数字表冠

crownSequencer.delegate = self
crownSequencer.focus()

在我正在实现的界面控制器的唤醒方法中:

class InterfaceController: WKInterfaceController, WKCrownDelegate 

在 watchOS 3 中,我的委托方法执行得很好:

// 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...
}

升级到watchos4后,此功能失效。 简单的重新编译并转换为 swift 4 没有帮助。

ios swift watchkit apple-watch watchos-4
2个回答
2
投票

我只需将 CrownSequencer 代码移至界面控制器的 willActivate 方法即可解决此问题:

override func willActivate() {
    ...

    crownSequencer.delegate = self
    crownSequencer.focus()
}

在我看来,如果你太早设置焦点,watchOS 4 中的某些东西会窃取焦点(也许与我正在使用的 spritekit 有关?)。

希望这可以为其他人节省一些时间!


0
投票

我无法这么简单地解决它。我需要添加延迟来重新建立对表冠的关注,如下所示:

-(void)delayDo{

self.crownSequencer.delegate=self;

[self.crownSequencer focus];

}

-(void)didAppear{

[self performSelector:@selector(delayDo) withObject:nil afterDelay:1.0f];

}

© www.soinside.com 2019 - 2024. All rights reserved.