Создание тактильной схемы обратной связи в Swift 3
Я очень новичок в Swift и программировании. Я пытаюсь создать шаблон тактильной обратной связи, запускаемой UILongPressGestureRecognizer. Когда пользователь "долго нажимает" на экран, я хочу, чтобы телефон вибрировал три раза с задержкой в 1 секунду между каждой вибрацией. Я пытался использовать "сон" для выполнения задержек в 1 секунду, но это не сработало. Каков наилучший способ сделать это правильно?
var feedbackGenerator : UIImpactFeedbackGenerator? = nil
func performFeedbackPattern() {
//create the feedback generator
feedbackGenerator = UIImpactFeedbackGenerator(style: .heavy)
feedbackGenerator?.prepare()
//play the feedback three times with 1 second between each feedback
feedbackGenerator?.impactOccurred()
sleep (1)
feedbackGenerator?.impactOccurred()
sleep (1)
feedbackGenerator?.impactOccurred()
}
@IBAction func gestureRecognizer(_ sender: UILongPressGestureRecognizer) {
switch sender.state {
case .began:
performFeedbackPattern()
default: break
}
1 ответ
Вы можете создать OperationQueue
и добавить операции с тактильной обратной связью. Операция будет выглядеть так:
class HapticFeedbackOperation: Operation {
override func main() {
// Play the haptic feedback
UIImpactFeedbackGenerator(style: .heavy).impactOccurred()
}
}
Вы можете добавить задержку между операциями.
Оформить заказ моего фреймворка с открытым исходным кодом Haptica, он поддерживает как Haptic Feedback
, AudioServices
и уникальные шаблоны вибрации. Работает на Swift 4.2, Xcode 10
Недавно я делал что-то подобное и придумал маленькую коробочку, на которую можно взглянуть. Вот ссылка https://github.com/iSapozhnik/Haptico
Таким образом, идея состоит в том, чтобы создать OperationQueue с отделом операций. Одной операцией может быть ваша тактильная обратная связь, а другой - операция паузы.