Тактильная обратная связь все еще продолжается после переключения контроллера представления
У меня есть вторичный контроллер представления, который использует некоторую тактильную обратную связь. Я запускаю тактильную обратную связь по запланированному таймеру, который повторяется каждые 14 секунд.
Timer.scheduledTimer(withTimeInterval: 14, repeats: true) { _ in
self.changeLabel()
}
Этот таймер вызывает функцию, которая запускает 2 тактильных обратной связи.
@objc func changeLabel() {
if counter2 == 1 {
//Haptics
let impactGenerator = UIImpactFeedbackGenerator(style: .medium)
impactGenerator.prepare()
impactGenerator.impactOccurred()
Timer.scheduledTimer(withTimeInterval: 7, repeats: false) { _ in
let impactGenerator = UIImpactFeedbackGenerator(style: .medium)
impactGenerator.prepare()
impactGenerator.impactOccurred()}
//Changing Label
self.mainFocusLabel.text = self.foclabel1Text
self.manifestationImg.sd_setImage(with: URL(string: self.imglabel1URL))
self.counter2 = 2
(есть еще код, но все они почти идентичны этому блоку, единственное отличие состоит в том, что он просто меняет метку на focuslabel2-10 и использует счетчик для распознавания следующей метки, которую нужно изменить.
Что происходит, что меня смущает, - это то, что после закрытия обзора вибрации (и, очевидно, таймер?) Все еще продолжаются. Мой телефон вибрирует с одинаковыми интервалами. Я не видел кода для отключения тактильной обратной связи. Я могу представить, что могу просто добавить это к другому контроллеру представления, чтобы решить эту проблему.
1 ответ
Решено .. Вид.
Мне пришлось сделать таймер переменной
var forteenSecTimer : Timer?
forteenSecTimer = Timer.scheduledTimer(withTimeInterval: 14, repeats: true) { _ in
self.changeLabel()
}
А затем добавить этот код к любой кнопке выхода или готовности. Мне пришлось программно заменить кнопку возврата, чтобы я мог убедиться, что этот код активируется всякий раз, когда представление закрывается.
forteenSecTimer?.invalidate()
Мне также пришлось изменить стиль представления контроллера представления с всплывающего окна, чтобы просто показать, потому что я не знал, как активировать этот код, когда представление просто сдвинулось, чтобы избавиться от него.
Не идеальное решение, но это то, что я придумал.