Gesture

Gesture

執筆済 ソフトウェア開発SwiftUI

タッチやポインタの操作を扱う。

swift
.onTapGesture { select() }
.gesture(
    DragGesture()
        .onChanged { offset = $0.translation }
        .onEnded { _ in withAnimation { offset = .zero } }
)

主なジェスチャ#

種類 用途
TapGesture 選択、実行
LongPressGesture 補助的な操作
DragGesture 移動、スワイプ
MagnifyGesture 拡大縮小
RotateGesture 回転

合成#

swift
gestureA.simultaneously(with: gestureB)   // 同時
gestureA.sequenced(before: gestureB)      // 順番に
gestureA.exclusively(before: gestureB)    // どちらか一方

長押ししてからドラッグ(並べ替え)などは sequenced で表す。

競合#

親と子、あるいはスクロールビューとの間で どちらがジェスチャを取るかの問題が起きる。

手段 効果
.highPriorityGesture 子より優先する
.simultaneousGesture 両方に届ける
.allowsHitTesting(false) 受け取らない

スクロール可能な領域の中で横方向のドラッグを扱うのは 特に競合しやすい。

使いやすさ#

指針 内容
タップ領域は 44×44 pt 以上 Apple の指針。指で押せる最小
発見できるようにする 隠れたジェスチャだけの機能を作らない
代替手段を用意する ボタンでもできるようにする
即座に反応を返す 押された状態を見せる

ジェスチャは補助であって、 それ以外の方法で到達できない機能を作ってはいけない。 アクセシビリティの観点でも、 複雑なジェスチャを実行できない利用者がいる。

参考文献#

ノート一覧を閉じる