How to detect long (3 sec) touch event in Ionic?

You can listen for the on-hold event, and then listen for the on-release event. You can compare the time of both events to determine how long the hold happened. Something like this might do it.

Button

<button class="button" on-hold="hold($event)" on-release="release($event)">My Button</button>

Controller

var didUserHoldForThreeSeconds = 0;
$scope.hold = function(event) {
  didUserHoldForThreeSeconds = event.timestamp;
};
$scope.release = function (event) {
  if (event.timestamp - didUserHoldForThreeSeconds > 3000) {
    console.log('Hooray! They held for 3 seconds')
  }
  didUserHoldForThreeSeconds = 0; // reset after each release
};
3 Likes