Как имитировать НАЖАТИЕ TouchEvent в WatchKit 3?

#swift3 #watchkit #apple-watch #watchos-3

#swift3 #watchkit #apple-watch #watchos-3

Вопрос:

Чего я хочу:

Я хочу, чтобы индикатор выполнения заполнялся до 100% при нажатии кнопки. Например: кнопка нажата, и индикатор выполнения продолжает заполняться непрерывно только при нажатии, пока не пройдет 2 секунды, а индикатор выполнения не достигнет 100% через 2 секунды.

Что я сделал:

Я попытался имитировать нажатие TouchEvent с помощью распознавателей жестов с длительным нажатием и распознавателя жестов, но не получил удовлетворительного результата. Основная проблема в том, что я не могу смешать жест нажатия с жестом длительного нажатия на одной и той же кнопке. Если бы я мог это сделать, я мог бы, по крайней мере, получить события приземления (касания) и касания (длительное нажатие) и попытаться имитировать желаемое поведение с помощью этого.

У кого-нибудь есть совет или это просто невозможно с текущей структурой?

Ответ №1:

Нашел удовлетворительный обходной путь. Я использую a WKLongPresssGestureRecognizer с моей кнопкой, которая должна иметь желаемое взаимодействие. Я установил Min Duration в инспекторе атрибутов 0 значение . И использовал следующий фрагмент в качестве IBAction для моего распознавателя:

 @IBAction func pressAndHold(_ sender: AnyObject) {
    guard let sender = sender as? WKLongPressGestureRecognizer else {
        return
    }
    if sender.state == WKGestureRecognizerState.began {
        print("Touch down")
    } else if sender.state == WKGestureRecognizerState.ended {
        print("Touch up")
    }
}