[SwiftUI]Formで複数のButtonが機能しない原因と解決法

SwiftUI

「Formで複数のButtonを実装しようとしたら使えなかった」

「Form内のButtonのタップが機能しない」

「Formのボタンの挙動がおかしい」

そう言った人に向けてこの記事は書かれています。

どうも、ちょげ(@chogetarou)です。

Formに複数のボタンを入れると、ビューは表示されます。

ここまでは良いのですが、いざボタンをタップしてみると、なぜか思い通りの挙動をしてくれない。

Formの1枠に複数のビューを入れてエラーが出るわけではなく、原因が分からない。

いろいろ調べてやっと解決することが出来、複数のボタンがちゃんと動作してくれるようになりました。

スポンサーリンク

原因

原因は、Formの1枠がタップされることになるからです。

普通のボタンの場合は、1つ1つのボタンが独立しています。

なので、押したいボタンをタップすれば、タップしたボタンしか動作しません。

しかし、フォームでは、1つ1つのボタンが独立しておらず、枠内の全てのボタンが、フォームの1つの枠と言う認識になります。

なので、押したいボタンをタップしても、ボタンではなく、フォームの1枠がタップされたことになります。

要するに、ボタンをタップすると、1枠内の全てのボタンが同時にタップされるのです。

解決法

Buttonビューに、buttonStyleモディファイアのBorderlessButtonStyle()を指定することで解決できます。

これを指定することにより、タップしたボタンだけが動作するようになります。

Button(action: {}, label: {
                            Text("分割")
             })
               .buttonStyle(BorderlessButtonStyle())

まとめ

  • ボタンをタップすると、フォームの枠自体がタップされることが原因
  • buttonStyle(BorderlessButtonStyle())をモディファイアをボタンに付けることで解決できる

読んで頂きありがとうございました。

参考になれば嬉しいです。

コメント

タイトルとURLをコピーしました