The source code

    /**
     * @ignore
     * fired when tap and hold for more than 1s
     * @author yiminghe@gmail.com
     */
    KISSY.add('event/dom/touch/tap-hold', function (S, eventHandleMap, SingleTouch, Event) {
        var event = 'tapHold';

        var duration = 1000;

        function TapHold() {
        }

        S.extend(TapHold, SingleTouch, {
            onTouchStart: function (e) {
                var self = this;
                if (TapHold.superclass.onTouchStart.call(self, e) === false) {
                    return false;
                }
                self.timer = setTimeout(function () {
                    Event.fire(e.target, event, {
                        touch: e.touches[0],
                        duration: (S.now() - e.timeStamp)/1000
                    });
                }, duration);
            },

            onTouchMove: function () {
                clearTimeout(this.timer);
                return false;
            },

            onTouchEnd: function () {
                clearTimeout(this.timer);
            }
        });

        eventHandleMap[event] = new TapHold();

        return TapHold;

    }, {
        requires: ['./handle-map', './single-touch', 'event/dom/base']
    });