From 5338484c4b76581297506c6627cea3619cc81b09 Mon Sep 17 00:00:00 2001 From: Rossen Hristov Date: Tue, 13 Dec 2016 14:33:01 +0200 Subject: [PATCH] Fix: setInterval callback is not fired while touch events are being processed Resolves #2116 --- tns-core-modules/timer/timer.ios.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/tns-core-modules/timer/timer.ios.ts b/tns-core-modules/timer/timer.ios.ts index 953e6de31..080481724 100644 --- a/tns-core-modules/timer/timer.ios.ts +++ b/tns-core-modules/timer/timer.ios.ts @@ -1,4 +1,12 @@ -//iOS specific timer functions implementation. +import * as utilsModule from "utils/utils"; +let utils: typeof utilsModule; +function ensureUtils() { + if (!utils) { + utils = require("utils/utils"); + } +} + +//iOS specific timer functions implementation. var timeoutCallbacks = new Map>(); var timerId = 0; @@ -51,6 +59,10 @@ function createTimerAndGetId(callback: Function, milliseconds: number, shouldRep let id = timerId; let timerTarget = TimerTargetImpl.initWithCallback(callback, id, shouldRepeat); let timer = NSTimer.scheduledTimerWithTimeIntervalTargetSelectorUserInfoRepeats(milliseconds / 1000, timerTarget, "tick", null, shouldRepeat); + + // https://github.com/NativeScript/NativeScript/issues/2116 + ensureUtils(); + utils.ios.getter(NSRunLoop, NSRunLoop.currentRunLoop).addTimerForMode(timer, NSRunLoopCommonModes); let pair: KeyValuePair = { k: timer, v: timerTarget }; timeoutCallbacks.set(id, pair);