Веб-приложение в Safari для iPad: отмена сенсорного запуска при касании - PullRequest
1 голос
/ 28 июня 2011

Это может показаться простым решением, но я вроде n00b, когда дело касается сенсорных устройств на iPad.

Я понимаю концепцию того, что мне нужно сделать, я просто неНе знаю синтаксис.

Проблема: У меня страница, полная DIV.Эти DIV обернуты в оболочку iScroll4.Сценарий iScroll настроен так, что если вы начнете прокручивать страницу, нажав и переместив ссылку, ссылка никогда не сработает.

Я, однако, не так хорош.Поскольку я настроил некоторый код jQuery для анимации одного из DIV на «touchstart», но проблема в том, что даже если я прокручиваю или тяну палец, анимация срабатывает даже тогда, когда я этого не хочу.

Мне нужно установить тайм-аут или отменить сенсорный запуск.Или включите анимацию на касании, но отмените касание, если вы перетащите палец на количество пикселей и превратите это касание в движение касанием.

Кто-нибудь знает, как это сделать?Заранее спасибо!

Алекс

РЕДАКТИРОВАТЬ: Вот мой текущий код jQuery.Мне нужно отменить функцию анимации от запуска, если я перетаскиваю палец на количество пикселей.Вероятно, используя pageX и pageY?

    $('tr#recent').live("touchend click", function () {
        $(".modalWindow").css('display', 'block').animate({
                height:716,
                top:15,
                left:15,
                width:995
            }, 300);            
    });

Вот как Yahoo делает это со своим Scrollview: http://developer.yahoo.com/yui/3/examples/scrollview/scrollview.html

var content = scrollView.get("contentBox"); 

content.delegate("click", function(e) {
    // Prevent links from navigating as part of a scroll gesture
    if (Math.abs(scrollView.lastScrolledAmt) > 2) {
        e.preventDefault();
        Y.log("Link behavior suppressed.")
    }
}, "a");

Посмотрите, как они проверяют сумму "lastscrolled" и затем отменяютповедение ссылки, если вы перетаскиваете палец на определенное расстояние ..... но я не использую Scrollview ....

1 Ответ

3 голосов
/ 28 июня 2011

Если вы хотите остановить запуск события по умолчанию, вам нужно отменить его.Прочитайте объект события jQuery , особенно event.preventDefault () и event.stopPropagation ().Другой трюк заключается в добавлении false в конец функции, так что ...

$( 'div' ).bind( 'touchstart', function(e)
{
    // do some funky stuff

    return false; // this'll cancel the default behaviour of the event
});

Обычно, если вы хотите сделать что-то еще, вы добавляете еще одну привязку для 'touchmove', чтобы получитьX и Y движения.

...