🚀
Jetpack Composeでマルチタップを検知する
Jetpack Composeでタッチイベントを制御する際にマルチタップを検知する方法がわからなかったので調査しました。
解決策
PointerEvent
にchanges
というプロパティがあります。
changes
はList
型になっておりタッチしている指の数だけPointerInputChange
が追加されるようになっているため、
下記のように、このプロパティのサイズを確認すればマルチタップしているかどうかが判定できます。
if (event.changes.size == 2) {
// 指2本でタップしている場合に行いたい処理
}
補足
公式ドキュメントからはこの使い方が正しいかどうかはわかりませんでした。
が、Jetpack ComposeのAwaitPointerEventScope.awaitFirstDown()
を見ると最初のDownイベントを検知するためにevent.changes[0]
を確認しているのでそこまで的外れではないのかなぁと思っています。
Discussion