💭
SwiftUIのGestureMaskに別の世界線はあるか
思うところあってこれを書いている。
SwiftUIの GestureMask
は、仕様を決めた人と実装した人で認識の違いがあるのではないか。
説明に用いるViewの構成
View A ジェスチャーあり
↳ View B ジェスチャーあり
↳ View C ジェスチャーなし
とする。
View Aの中にView BとView Cがある。
View AとView Bにはジェスチャーが設定してある。
View Aのジェスチャーの設定時に GestureMask
も指定する。
現状
Bを操作 | Cを操作 | |
---|---|---|
all | Bが反応 | Aが反応 |
subviews | Bが反応 | なし |
別の世界線
Bを操作 | Cを操作 | |
---|---|---|
all | AとBが反応 | Aが反応 |
subviews | Bが反応 | Aが反応 |
allは、葉でジェスチャーに反応しても、そのまま上に伝える
subviewsは、葉でジェスチャーに反応したら、上に伝えない
なぜそう思ったか
allの
Enable both the added gesture as well as all other gestures on the view and its subviews.
という説明はすべてのジェスチャーを有効にするように言っていそう。
subviewsの
Enable all gestures in the subview hierarchy but disable the added gesture.
という説明のbut以降はサブビューにジェスチャーがあったら(サブビューがジェスチャーに反応したか)という仮定の中の話と解釈できるのではないか。
と思ったから。
Discussion