首页 > 解决方案 > 有没有办法在遍历数组时包含定时暂停?

问题描述

我正在创建一个可以将字符串中的字母转换为振动模式的应用程序。这是我到目前为止所拥有的:

@IBAction func translateButtonTapped(_ sender: UIButton) {
   guard CHHapticEngine.capabilitiesForHardware().supportsHaptics else {return}

let Bz1 = CHHapticEvent(eventType: .hapticContinuous, parameters: [], relativeTime: 0.0, duration: 0.1)
let Bz2 = CHHapticEvent(eventType: .hapticContinuous, parameters: [], relativeTime: 0.3, duration: 0.1)
let Bzz1 = CHHapticEvent(eventType: .hapticContinuous, parameters: [], relativeTime: 0.0, duration: 0.25)

let dictionary = [
"A" : [Bzz1],
"T" : [Bz1, Bz2],
]

let message = detectedTextLabel.text
//text box where string is written

let letterArray = message!.map { String($0) }

 for singleWord in letterArray {

    let word = String(singleWord)
    if let vibrationArray = dictionary[word] {

    do {

      for Word in vibrationArray {

           let encodedMessage = try CHHapticPattern(events: [Word], parameters: [])
           let player = try engine?.makePlayer(with: encodedMessage)
           try player?.start(atTime: 0)

    }
     } catch {
       print("there was an error")
     }

     } else {
      print("There was an error")
      }

 }

到目前为止,如果我在文本框中键入单数字母,则此代码有效。但是,例如,如果我在文本框中键入“AT”,而不是振动一个接一个地播放,它们会同时播放。有没有办法在第一个字母模式和第二个字母模式之间放置某种延迟或暂停?

标签: swiftxcode

解决方案


使用计时器进行延迟

Timer.scheduledTimer(withTimeInterval: 1, repeats: false) { _ in // Do your stuff here } 

推荐阅读