Я реализую свой собственный UIInterpolationEffect
, который может быть закрыт.это мой класс:
class ClosureMotionEffect: UIInterpolatingMotionEffect {
typealias MotionClosure = (UIOffset) -> Void
var closure: MotionClosure?
init(closure: @escaping MotionClosure) {
self.closure = closure
super.init(keyPath: "", type: .tiltAlongVerticalAxis)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func keyPathsAndRelativeValues(forViewerOffset viewerOffset: UIOffset) -> [String : Any]? {
super.keyPathsAndRelativeValues(forViewerOffset: viewerOffset)
print(viewerOffset)
closure?(viewerOffset)
return nil
}
}
Почему-то, когда я печатаю значения перед вызовом замыкания, если я играю с устройством, а затем просто кладу его на стол, функция keyPathsAndRelativeValues
продолжает получатьзвонили примерно в 10-20 раз, с уменьшением времени между звонками.В конце концов это останавливается.
Это очень плохо влияет на мой опыт, так как я не хочу, чтобы мое закрытие продолжало вызываться.