swift - 有没有办法在遍历数组时包含定时暂停?
问题描述
我正在创建一个可以将字符串中的字母转换为振动模式的应用程序。这是我到目前为止所拥有的:
@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”,而不是振动一个接一个地播放,它们会同时播放。有没有办法在第一个字母模式和第二个字母模式之间放置某种延迟或暂停?
解决方案
使用计时器进行延迟
Timer.scheduledTimer(withTimeInterval: 1, repeats: false) { _ in // Do your stuff here }
推荐阅读
- python - `tcl/auto.tcl 无法提取!fopen:pyinstaller 的不是目录错误
- ios - 使 UICollectionViewCell 与 UICollectionView 宽度相同
- python - SQL 语句错误中未使用所有参数
- java - 将变量范围从一帧扩展到另一帧
- php - PHP - 将资源从 PHP 推送到嵌套不同资源/星期几的 JSON 时出错
- python - 无法让我的基本 Webscraper 启动 Google
- oracle - 表 user_tab_modifications 表中的记录有时间限制吗?
- pyspark - 如何遍历数据框的数组值?
- javascript - SyntaxError:/Users/3x7r3m157/Development/Javascript/db.json:JSON 输入意外结束
- android - Android Studio Kotlin - 在 BottomSheetDialogFragment 中禁用用户手势