Правильное поведение сенсорных кнопок для MobileSafari - PullRequest
10 голосов
/ 17 января 2012

MobileSafari, как правило, имеет некорректное поведение кнопки HTML (неверное значение: «не похоже на собственную кнопку iOS»). Правильное поведение кнопки выглядит следующим образом:

  • Пользователь нажимает кнопку: Подсветка кнопки
  • Пользователь вытаскивает палец из кнопки: кнопка тускнеет
  • Пользователь перетаскивает палец назад в кнопку: Подсветка кнопки
  • Пользователь вытаскивает палец из кнопки и отпускает: Кнопка не нажимает

Кнопки MobileSafari выделяются при касании их, остаются выделенными независимо от того, куда вы перемещаетесь, и нажимают независимо от того, где вы отпускаете их (если только прокрутка представления не происходит, в этом случае касание всегда отменяется, даже если вы повторно вводите кнопку ).

Эта проблема распространяется на все интерактивные объекты, такие как ссылки (когда -webkit-touch-callout установлено на none). Пока я нашел только одно веб-приложение с правильным поведением кнопок: Facebook. Если посмотреть на их код, похоже, что они сделали много прыжков, чтобы заставить его работать правильно (отслеживая все события мыши вручную и вообще не используя кнопки). Код плотный, использует Javelin, и я пока не совсем разбираюсь во всех частях, необходимых для его работы.

Я знаю, что я немного шучу (потому что если бы это было легко, все бы это сделали), но я все равно спрошу. Есть ли общедоступный кусок кода, который обрабатывает эту функцию? Есть ли более простое решение, чем обратный инжиниринг Javelin, даже если оно применимо только к WebKit? (Javelin не очень хорошо подходит для моих легких задач.) Моя конечная цель - правильное поведение кнопок для UIWebView, встроенного в собственное приложение, поэтому гибридные решения JavaScript / ObjC также приемлемы (хотя гибридных подходов не существует ум).

1 Ответ

1 голос
/ 14 мая 2012

По сути, вам нужно создать какую-то функциональность гибридного наведения для сенсорных устройств, которая определяет, когда ваш палец перемещается в / из рассматриваемой кнопки.

Я построил базовый JSFiddle, который реализует некоторые базовые функции.Если вы знаете какой-либо javascript, я думаю, вы поймете идею.

Live JSFiddle DEMO

Попробуйте это на вашем устройстве iOS (и, возможно, на вашем устройстве Android ??).

-Брайен

...