WKInterfacePicker setValue и pickerAction бесконечный цикл

Основное приложение отправляет данные для просмотра, а watch устанавливает индекс средства выбора, используя:

[picker setSelectedItemIndex:val];

Это, в свою очередь, вызовет действие сборщика. Однако мое действие сборщика отправляет данные на телефон (используя sendMessage) который, в свою очередь, отвечает назад, чтобы посмотреть... и это продолжается вечно.

Как я могу отменить действие выбора для setSelectedItemIndex:? WKInterfacePicker не имеет removeTarget: метод.

1 ответ

Вы не хотите удалить действие. Вместо этого у вас есть несколько вариантов, чтобы просто остановить цикл:

  • Установка значения выбора только при получении исходного сообщения, а не при получении ответа.

    Если часы говорят: "Индекс выбора - 3", а телефон отвечает: "Роджер, сборщик был установлен на 3", - почему вы хотите, чтобы ваш код часов установил сборщик на основе ответа на что-то, что часы изначально отправили?? Похоже, в этом суть проблемы, и это было бы оптимальным решением.

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

  • Не устанавливать (или отправлять) значение сборщика, если оно уже соответствует текущему выбранному индексу сборщика.

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

  • Используя другой WCSession метод (такой как updateApplicationContext) который предназначен для повторной отправки данных, когда они соответствуют самым последним applicationContext,

Другие вопросы по тегам