こんにちはコーヤです。
このページでは、システムの触覚の使い方をご紹介します。システムの触覚とは、物理的なボタンを押したときの反動を再現するようにiPhoneが一瞬だけ振動する機能です。
以下のバージョンで動作確認しています。
- Xcode 14.2
- Swift 5.7.2
システムの触覚の種類
システムの触覚は7種類あります。
それぞれiPhoneの振動を丸で表したのが以下の図です。丸の大きさが振動の大きさを表しています。
SuccessとWarningは2回振動しますが、大小で振動するか小大で振動するかの違いがあります。(注意深く触っていないと違いが分からないくらいの差です。)
Errorは3回振動するので他との違いが分かりやすいです。
システムの触覚のソースコード
2行目のimport文を忘れないように注意です。
import SwiftUI
import AudioToolbox
struct ContentView: View {
let UINFGenerator = UINotificationFeedbackGenerator()
let UIIFGeneratorHeavy = UIImpactFeedbackGenerator(style: .heavy)
let UIIFGeneratorMedium = UIImpactFeedbackGenerator(style: .medium)
let UIIFGeneratorLight = UIImpactFeedbackGenerator(style: .light)
let UISFGenerator = UISelectionFeedbackGenerator()
var body: some View {
VStack(spacing: 20) {
VStack {
Text("UINotificationFeedbackGenerator")
.font(.title)
HStack {
Button("Success") {
UINFGenerator.notificationOccurred(.success)
}
Button("Error") {
UINFGenerator.notificationOccurred(.error)
}
Button("Warning") {
UINFGenerator.notificationOccurred(.warning)
}
}
.buttonStyle(.borderedProminent)
}
Divider()
VStack {
Text("UIImpactFeedbackGenerator")
.font(.title)
HStack {
Button("Heavy") {
UIIFGeneratorHeavy.impactOccurred()
}
Button("Medium") {
UIIFGeneratorMedium.impactOccurred()
}
Button("Light") {
UIIFGeneratorLight.impactOccurred()
}
}
.buttonStyle(.borderedProminent)
}
Divider()
VStack {
Text("UISelectionFeedbackGenerator")
.font(.title)
HStack {
Button("Changed") {
UISFGenerator.selectionChanged()
}
}
.buttonStyle(.borderedProminent)
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
システムの触覚が動作しない場合、iPhoneの設定アプリでOFFにしていないか確認しましょう。
コメント欄