Handsontable редактировать на мобильном устройстве
Я знаю, что handsontable не подходит для мобильных устройств, но есть ли обходной путь, который мы можем редактировать на мобильных устройствах с помощью новейшей версии?
С уважением
1 ответ
Я использую Handsontable версию 0.25.1, но я думаю, что в самой последней версии ситуация все та же.
Мой опыт только с устройством iPad (iOS 9); Я не могу говорить о всех мобильных устройствах.
Я нашел рендеринг приемлемым. Но если вы нажмете на ячейку для редактирования, ничего не произойдет, что весьма ограничивает! Я сделал только два небольших изменения, чтобы исправить:
Отслеживание всего этого прямо в handsontable.full.js
логика в onCellMouseDown()
тестирует event.button === 0
(т.е. левой кнопкой мыши), чтобы начать настройку распознавания двойного щелчка, чтобы активировать мобильный текстовый редактор. На сенсорном устройстве они явно onMouseDown/Move/Up()
от их onTouchStart/Move/End()
передавая события мыши event
структура получена для сенсорного события. Тем не менее, сенсорные события " event
структура не имеет button
член, так что это undefined
, вызывая плохое поведение.
Непосредственно настройка передается в event.button = 0
прежде чем перейти к обработчикам событий мыши решает это. Поместите в линию:
event.button = 0; // set as left mouse button
в onTouchStart()
[до звонка в onMouseDown(event)
около 1326] onTouchEnd()
[до звонка в onMouseUp(event)
вокруг линии 1368].
Теперь нажатие на ячейку позволяет корректно редактировать. Воспитывает их MobileTextEditor
, Что мне не понравилось по ряду причин, включая тот факт, что он часто появляется за экранной клавиатурой, поэтому пользователь даже не знает, что он там есть! Я изменил их Handsontable.TextCell
[вокруг линии 4346] так, чтобы editor:
строка теперь гласит:
editor: (isMobileBrowser() && Handsontable.useMobileEditor) ? getEditorConstructor('mobile') : getEditorConstructor('text'), // only use mobile editor if explicitly called for
Так что он использует стандартный текстовый редактор на месте, который я предпочитаю, если вы не идете hot.updateSettings({useMobileEditor: true})
,