提问人:gizmodus 提问时间:10/18/2023 更新时间:10/18/2023 访问量:21
WKCrownDelegate.crownDidRotate() 并不总是接收事件
WKCrownDelegate.crownDidRotate() not always receiving events
问:
我有一个具有可滚动视图的 WatchOS 应用程序。根据应用程序的状态,我希望接收牙冠旋转事件。
为了实现此行为,我设置了一个计时器,用于调用 crownSequencer 的 focus() 方法。
在 XCode 的 Apple Watch 模拟器中,应用程序的行为一致,没有问题。但是,一些用户(并非全部)报告说旋转表冠不起作用。这种行为可能是什么原因?
以下是相关代码:
import WatchKit
import Foundation
import HealthKit
class MyInterfaceController: WKInterfaceController {
var controlTimer: Timer?;
var restTimer: Timer?;
var timer: Timer?;
override func awake(withContext context: Any?) {
super.awake(withContext: context)
setupTimers()
}
override func willActivate() {
super.willActivate()
setupTimers()
}
override func didAppear() {
super.didAppear()
setupTimers()
}
func setupTimers() {
clearTimers()
restTimer = Timer.scheduledTimer(withTimeInterval: 0.01, repeats: true, block: { _ in
// Do something
});
timer = Timer.scheduledTimer(withTimeInterval: 0.01, repeats: true, block: { _ in
// Do something
});
controlTimer = Timer.scheduledTimer(withTimeInterval: 0.2, repeats: true, block: { _ in
if (someCondition == false) {
self.crownSequencer.resignFocus()
} else {
self.crownSequencer.delegate = self
self.crownSequencer.focus()
}
});
}
func clearTimers() {
controlTimer?.invalidate()
controlTimer = nil
restTimer?.invalidate()
restTimer = nil
timer?.invalidate()
timer = nil
}
}
extension MyInterfaceController : WKCrownDelegate {
func crownDidRotate(_ crownSequencer: WKCrownSequencer?, rotationalDelta: Double) {
if (rotationalDelta > 0.2) {
// Do something
} else if (rotationalDelta < -0.2) {
// Do something
}
}
}
答: 暂无答案
评论