【发布时间】:2020-07-31 21:27:51
【问题描述】:
我确保将 Motion 添加到我的 plist 中。不知道哪里出错了。
下面是我的代码:
import SwiftUI
import CoreMotion
struct Settings: View {
@State var walk = ""
@State var run = ""
@State var unk = ""
var body: some View {
VStack{
Text("Stationary: \(walk)")
Text("Walking: \(run)")
Text("Unknown: \(unk)")
Button(action: {
self.startTest()
}) {
Text("Start")
}
}
}
func startTest(){
let motionActivityManager = CMMotionActivityManager()
if CMMotionActivityManager.isActivityAvailable() {
motionActivityManager.startActivityUpdates(to: OperationQueue.main) { (motion) in
self.walk = (motion?.stationary)! ? "True" : "False"
self.run = (motion?.walking)! ? "True" : "False"
self.unk = (motion?.unknown)! ? "True" : "False"
print(self.walk)
print(self.run)
print(self.unk)
}
}
print("NONE")
}
}
【问题讨论】:
-
我检查过是否是异步问题,但我认为不是。
-
您的
CMMotionActivityManager是您的startTest函数中的一个局部变量,所以它会在该函数返回时立即释放。你需要它至少是你的视图结构的一个属性(如果不在它自己的模型对象中)
标签: ios swift swiftui core-motion