SwiftUIでtouchDownとtouchUpを検知する
概要
ユーザーがボタンを触り始めたことを検知するtouchDownと
ボタンから指を離したことを検知するtouchUpをSwiftUIで検知する方法です。
例として、スピークバディアプリ内ではこの様に使用しています。
コード紹介
SwiftUIで提供されているButtonStyleを使用します。
実装
struct SBButtonStyle: ButtonStyle {
let onTouchDown: () -> Void
let onTouchUp: () -> Void
func makeBody(configuration: Configuration) -> some View {
configuration.label
.onChange(of: configuration.isPressed) { $0 ? onTouchDown() : onTouchUp() }
.frame(maxWidth: .infinity, maxHeight: .infinity)
.contentShape(Rectangle())
}
}
使用例
Button("Title", action: {
// ボタンアクション
})
.buttonStyle(
SBButtonStyle(onTouchDown: {
// タップ開始時の処理
}, onTouchUp: {
// 指を離したときの処理
})
)
おわり
お読みいただきありがとうございます!
もしなにかのお役に立つことがございましたら、
♡を頂けますとすごく励みになります😊
この記事が気に入ったらサポートをしてみませんか?