Предотвращение случайного двойного щелчка на мобильном телефоне

У меня есть несколько моментов, чтобы добавить к превосходный ответ Брайана Гетца .

. Очень часто возвращать Stream из вызова метода стиля «getter». См. Страницу использования потока использования в Java 8 javadoc и найдите «методы ..., которые возвращают поток» для пакетов, отличных от java.util.Stream. Эти методы обычно относятся к классам, которые представляют или могут содержать несколько значений или агрегатов чего-либо. В таких случаях API обычно возвращают коллекции или массивы из них. По всем причинам, которые Брайан отметил в своем ответе, очень гибко добавлять сюда методы Stream-return. У многих из этих классов уже есть методы, основанные на коллекции или массиве, поскольку классы предшествуют API Streams. Если вы разрабатываете новый API, и имеет смысл предоставлять методы Stream-return, возможно, нет необходимости добавлять методы возврата коллекции.

Брайан упомянул стоимость «материализации» значения в коллекцию. Чтобы усилить этот момент, на самом деле существуют две затраты: стоимость хранения значений в коллекции (выделение и копирование памяти), а также стоимость создания значений в первую очередь. Последнюю стоимость часто можно уменьшить или избежать, воспользовавшись стремлением Stream к лени. Хорошим примером этого являются API-интерфейсы в java.nio.file.Files:

static Stream  lines(path)
static List    readAllLines(path)

Не только readAllLines должны хранить все содержимое файла в памяти, чтобы сохранить его в списке результатов, должен прочитать файл до самого конца, прежде чем он вернет список. Метод lines может вернуться почти сразу после того, как он выполнил некоторую настройку, оставив чтение файла и прерывание строки до тех пор, пока это будет необходимо - или совсем нет. Это огромное преимущество, если, например, вызывающий пользователь интересуется только в первых десяти строках:

try (Stream lines = Files.lines(path)) {
    List firstTen = lines.limit(10).collect(toList());
}

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

. Идиома, которая, кажется, появляется, - это имя методов возврата потока после множественного числа имени того, что оно представляет или содержит, без префикса get. Кроме того, в то время как stream() является разумным именем для метода возврата потока, когда есть только один возможный набор значений, возвращаемых, иногда есть классы, которые имеют агрегаты нескольких типов значений. Например, предположим, что у вас есть объект, содержащий как атрибуты, так и элементы. Вы можете предоставить два API-интерфейса, возвращающих поток:

Stream  attributes();
Stream    elements();

0
задан Fozoro 13 July 2018 в 13:34
поделиться

2 ответа

Чтобы сделать это с таймаутом

//onOverlayOpen
this.overlay.classList.add('overlay--blocked');
setTimeout(() => {
    this.overlay.classList.remove('overlay--blocked');
}, 350);

//CSS
.overlay--blocked {
    pointer-events: none;
}
0
ответ дан michal 17 August 2018 в 12:56
поделиться

Вы можете использовать ondblclick ( https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/ondblclick ), чтобы вернуть false, но это похоже на Проблема UX, когда ваши кнопки находятся точно в одном положении. Хотя, если пользователю удастся щелкнуть две кнопки подряд, это, вероятно, не считается правильным двойным щелчком, поэтому первое решение может не сработать.

Я бы действительно предложил переместить вторую кнопку в другую позицию в модальном или для перемещения самого модала.

0
ответ дан borisrorsvort 17 August 2018 в 12:56
поделиться
  • 1
  • 2
    И GlobalEventHandlers.ondblclick, к сожалению, не поддерживает Chrome на мобильных устройствах – michal 13 July 2018 в 13:09
  • 3
    На самом деле вы ничего не можете сделать, кроме изменения ux imho. Кажется, это тоже очень остроумный случай. Не менее идеальным может быть добавление окна подтверждения после нажатия на вторую кнопку, чтобы люди могли отменить свою ошибку, нажав кнопку «Отменить». – borisrorsvort 13 July 2018 в 13:14
Другие вопросы по тегам:

Похожие вопросы: