Одна из работ, которую я использовал, это «заморозка» iscroll, когда я хочу, чтобы пользователь мог вносить изменения. Несовместимость, которую iScroll имеет с входными данными, связана, насколько я могу судить, с преобразованиями css в сочетании с поддержкой касания, которая применяется к содержимому в скроллере. Если вы временно отключите скроллер, вы сможете разрешить пользователю вводить значения. Хитрость заключается в том, чтобы убедиться, что текущее местоположение прокрутки содержимого сохраняется при отключении. Когда «заморожен», пользователь может обновить входные данные в видимой области. Недостатком является то, что скроллер не будет прокручиваться в этом состоянии. Вам придется разморозить его на каком-нибудь мероприятии.
Я добавил эти функции в iScroll.prototype, чтобы эта работа работала:
_get_current_scroll_px: function (transformStyle) {
//return the first string that looks like an integer, that should be the x translation
return /[\-0-9]+px/.exec(transformStyle)[0];
},
freeze: function () {
this.disable();
this.savedStyle = this.scroller.style[vendor + 'Transform'];
this.scroller.style['marginLeft'] = this._get_current_scroll_px(this.savedStyle); //use margin left instead of transform to position scroller
this.scroller.style[vendor + 'Transform'] = '';
},
thaw: function () {
this.scroller.style[vendor + 'Transform'] = this.savedStyle;
this.scroller.style['marginLeft'] = '0';
this.enable();
}
Вызов или заморозка это будет выглядеть так:
//user triggered event causes freeze
yourFreezeEventCallback: function () {
myScroll1.freeze();
//now user can use visible inputs on screen
}
Оттепель это будет выглядеть так:
//user triggered event causes thaw
yourThawEventCallback: function () {
myScroll1.thaw();
//now scrolling is back and inputs can no longer be edited or in focus
}
Очевидно, вам нужно каким-то образом интегрировать это в ваш собственный проект, но это сработало для меня. Это не идеально, поэтому я с нетерпением жду обновления iScroll. Предупреждение: это не проверено в IE, поэтому я не буду ручаться за это там. Я надеюсь, что это, по крайней мере, начало, чтобы помочь вам обойти это.