+1
Answered

Колесико-установка времени, даты, чего чего угодно

Виктор 5 years ago in Tips and Tricks updated by Владимир Давыдов 5 years ago 24

Здравствуйте! 

Никак не пойму, как лучше реализовать интерфейс установки даты или времени. Без клавиатуры, конечно. 

Напрашивается колесико вверх/вниз. Может, уже есть подобная реализация, где её можно найти?

GOOD, I'M SATISFIED

отлично!

Satisfaction mark by Виктор 5 years ago
-1
Under review

Добрый день.

Отдельных графических инструментов для работы с датой нет. Если нужно задавать значения без реальной клавиатуры, то можно использовать Virtual key. Дату извлекать/формировать скриптом.

-1

ясно. Очень жаль. Очень нужная вещь. Потребитель давно отвык что-то вводить текстом. Будильник, таймер на айфоне - что угодно. Такой нативный инструмент нужен.

-1

List можно сделать, как мне кажется

-1

Добрый день.

Можно и Static List использовать, но значения нужно будет приводить к Date.

-1

Не могу представить как листом сделать бодрое колесико..

-1

Добрый день.

Что означает "бодрое"?

-1

Здравствуйте! 

Речь о скорости прокручивания, позиционировании. 

-1

Приложите ваш проект.

-1

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

-1
Will be answered

Мы сделаем пример с выбором даты из списка. Приложим его сюда завтра (05.06.2019).

+3
Answered

Пример с выбором даты через барабан. Результат выводится в лог.

change_date.irpz

-1

Если повесить вызов барабана/вашего проекта на кнопку, то при повторном вызове значения барабана дублируются. Т.е. при нажатии кнопки done появляются предыдущие значение но дважды. Подскажите как правильно сделать так чтобы экземпляр предыдущего барабана стерался и не возникал фантом. 

-1

Добрый день.

Создаётся новый объект при каждом вызове. Сделайте так: закрыть попап, на котором расположен барабан, а затем открыть его. Тогда выполнение этого действия не будет создавать копии объектов.

-1

Что вы имеете в виду под закрыть попап? У вас в коде уже есть скрыть попап IR.HidePopup("Remote"). Возможно вы имеете в виду удалять целиком попап Remote и создавать его по новой. Не пробывал в коде его создавать, поскольку он достаточно сложный - состоит из кучи различных элементов.

Я пробывал удалять элементы например, если удалить item барабанов IR.DeleteItem(_left) и IR.DeleteItem(_right) то визуально все работает, ничего не накладывается друг на друга, но если смотреть лог значения данных с барабана, видно что экземпляров объектов больше.

Прошу ответить однозначно решение проблемы это создание и удаление попапа Remote через create delete?

-1

Добрый день.

Приложите ваш пример, в котором вызываете барабан.

-1

У вас в проекте барабан создаётся каждый раз при вызове. Делайте проверку на наличие объекта перед инициализацией барабана, что-то типа этого:

if (b == undefined)
{
СreatePickerItems(IR.GetItem("Remote"));
b = IR.GetItem("Remote");
}

Возможно кто-то предложит более изящный способ.

Предложенное решение позволяет не плодить барабаны, но тем не менее если посмотрите лог, то при вызове несколько раз добавления будильников и последующим нажатием Ok, в лог вываливается текущее значение с барабана, но столько раз сколько открывался попап Remote. Т.е. слушатель на кнопку Done видит несколько кнопок Done. Возникает вопрос а попапы после скрытия удаляются из памяти?


Надеюсь ясно выразился, проект прилагаю Clock



-1

Так и должно быть, попап тут ни при чём. Сейчас у вас функция с одним EVENT_ITEM_RELEASE находится внутри другой функции с другим EVENT_ITEM_RELEASE. В итоге - один раз отпустили кнопку - сработало 2 отдельных идентификатора, в каждом из которых выполнилась своя функция. Технически это ошибкой не является (разве что логической), но скорее всего вам нужно разделить эти идентификаторы, чтоб они не мешали друг другу.

-1

Благодарю разобрался, все заработало как надо! Не думал что если отработал один EVENT_ITEM_RELEASE и внутри него в функции сработает еще один EVENT_ITEM_RELEASE будет такой результат. Учту в будущем, еще раз спасибо!

Класс! Спасибо! Никогда бы не подумал, что так будет работать. У меня всегда трудности с графикой на иридии. То окна медленно в статик листе перелистываются, то попапы медленно таскаются.. А у вас все получилось. Еще больше нравится использовать ваш продукт!

-1

Так.. А откуда ITEM_PICKER? Я раньше не пользовался созданием айтемов, только задумывался об этом. 

Тут ничего нет о таком. Я правильно понял, что вы создали элемент, которого нет в студии и документации, и на его основе получился барабан?))

Если я это правильно понял, то подскажите, где еще можно подобных примеров найти с разными интересными айтемами? 

-1

Наше упущение - не обновили документацию по этому элементу (исправим в ближайшее время).

Обычно примеры и ухищрения в разделе tips&tricks https://dev.iridi.com/TipsAndTricks