UIScrollなどでスクロール中にTimer(NSTimer)が止まる現象が起こりました
スクロールをキュッキュキュッキュとDJのように動かし続けると、タイマー処理が呼ばれなくなり、スクロール処理をやめると、タイマーが再開されます。具体的には、最近リリースした「絵文字マスター」。絵文字キーボードをスクロールし続けると、制限時間のタイマーが止まってしまいます
どうやら、Timerをメインスレッドで動かしているのが原因みたいです。なので、Timerを別スレッドで動かせば解決します
let myTimer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(updateTimer(_:)), userInfo: nil, repeats: true) RunLoop.current.add(myTimer, forMode: RunLoopMode.commonModes) func updateTimer(_ timer: Timer) { // タイマーで実行したい処理 }
これで解決