Прокручиваемый <textarea>в iPhone - PullRequest
4 голосов
/ 13 февраля 2012

Я использую phoneGap 1.1.0 и iScroll 4.1.9 для создания приложения для iPhone и Android.На андроид-прокрутке текстовая область работает нормально.Но на iPhone текстовая область не прокручивается. Прокрутка двумя пальцами не работает на моем iPhone 3GS (iOS 5.0.1) У кого-нибудь есть решение?спасибо.

Ответы [ 2 ]

0 голосов
/ 23 сентября 2012

Я знаю, что уже немного поздно, но я нашел решение:

Этот ответ на этот вопрос останавливает прокрутку UIScrollView в UIWebView: Отключить прокрутку в UIWebView разрешено?

Я добавил этот код в функцию viewDidLoad MainViewController.m

for (UIView *view in webview.subviews) {
    if ([view isKindOfClass:[UIScrollView class]]) {
       UIScrollView *scrollView = (UIScrollView *)view;
       scrollView.scrollEnabled = NO;
    }
}

Следующая проблема не позволяет iScroll обрабатывать события в TextArea, для этого вам нужно получить отладочную версию iscroll, чтобы вы могли изменитькод (3-я строка):

handleEvent: function (e) {
    var that = this;
    if(e.srcElement.tagName == "TEXTAREA") return; // don't handle textarea
    switch(e.type) {
        case START_EV:
            if (!hasTouch && e.button !== 0) return;
            that._start(e);
            break;
        case MOVE_EV: that._move(e); break;
        case END_EV:
        case CANCEL_EV: that._end(e); break;
        case RESIZE_EV: that._resize(); break;
        case WHEEL_EV: that._wheel(e); break;
        case TRNEND_EV: that._transitionEnd(e); break;
    }
}

, а также не предотвращать дефолт для вашей текстовой области, используя аналогичный if.

Эта комбинация сработала для меня.

-webkitи переполнение css-тегов просто делает его лучше.

Э-э, а на ios 4 прокрутка выполняется двумя пальцами, а не одним.

0 голосов
/ 13 февраля 2012

Проблема связана с тем, что, как мне кажется, вы пытаетесь сделать, и отключаете «рамку» приложения от прокрутки за пределы экрана с помощью:

document.addEventListener('touchmove', function(e) {
    e.preventDefault();
}, false);

К сожалению, я перепробовал каждую комбинацию, которую могу представитьо включении нового свойства -webkit-overflow-scrolling: touch CSS (безрезультатно).Решение еще не найдено.

...