Это простой класс триггер, который я написал. Кажется, он работает неплохо. Приемник для данных магнита.
Использование:
let magnetListener = VRMagnetSensor()
magnetListener.callback = { type in
// will print MAGNETIC SENSOR REPORTED onPress
print("MAGNETIC SENSOR REPORTED \(type)")
}
А класс - VRMagnetSensor.swift
import Foundation
import CoreMotion
public class VRMagnetSensor {
let manager = CMMotionManager()
var previousMagnetData = (x:0.0, y:0.0, z:0.0)
var callback:((type:String) ->())?
init() {
if manager.magnetometerAvailable && !manager.magnetometerActive {
let sensorInterval = NSTimeInterval(0.5)
manager.magnetometerUpdateInterval = sensorInterval
manager.startMagnetometerUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler: {
(data, error) in
let field = data!.magneticField
print("MAGNETIC DATA x \(field.x) y \(field.y) z \(field.z)")
if(field.x < self.previousMagnetData.x-30 && self.previousMagnetData.x != -0.0) {
dispatch_async(dispatch_get_main_queue()) {
self.callback!(type:"onPress")
}
}
self.previousMagnetData = (x:field.x, y:field.y, z:field.z)
})
}
}
}
Спасибо за ваше сообщение! Пожалуйста, сформулируйте ваше заявление о миссии как вопрос. – joepd