規約画面に目的の位置へスクロールする方法を取り入れてみた

#目次
1. はじめに
2. 実装方法
3. まとめ
4. 参考

#はじめに
画面に表示しきれない部分がある場合、スクロールをしないと確認することができません。
ただその画面が長い場合、その画面内で目的のところを探すのに時間がかかります。
そこで今回はこの記事では目的の位置までスクロールする方法をご紹介します。

#実装方法
####**①画面の作成**
![smple.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/f1616904-4a96-2a37-b573-f6e4aa8bc990.png)

今回は5つのボタンを配置しました。それぞれのボタンをタップすると以下のような動作になります。

| ボタン名 | 動作 |
| ------ | ----- |
| FABの一番上へ戻る | 一番上へスクロール |
| FABの一番下へ戻る | 一番下へスクロール |
| 利用規約へ戻る | 一番上へスクロール |
| プライバシポリシーへ戻る | プライバシーポリシーまでスクロール |
| 少し上へ戻る | このウィジェットから任意の位置へスクロール（今回は少し上へいくよう設定） |

画面の構成は以下になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/d4694ff8-55bd-43cc-da4c-b65e501767fc.png)

####**②コーディング**
frmTermsOfUseControllerのコーディングを行います。

```frmTermsOfUse.js
define({
  
  //一番上へスクロール
  scrollToTop : function(){
    var self = this;
    self.view.flxScMain.scrollToWidget(self.view.flxItem1);
  },

  //該当ウィジェットへスクロール
  scrollToPosition : function(){
    var self = this;
    self.view.flxScMain.scrollToWidget(self.view.flxItem2);
  },

  //一番下へスクロール
  scrollToBottom : function(){
    var self = this;
    self.view.flxScMain.scrollToEnd();
  },

  //メソッド：setContentOffsetを使用して少し上の位置にスクロール
  scrollUseSetContentOffset : function(){
    var self = this;
    self.view.flxScMain.setContentOffset({"x":0,"y":"80%"}, true);
  }

});
```
上を説明します。

**scrollToWidget**：選択したウィジェットの位置までフォームをスクロールすることができます。
**scrollToEnd**：フォームの最後までスクロールすることができます。
**setContentOffset**：コンテンツをある位置から別の位置にオフセットすることができます。（今回は少し上へいくように設定しています）

####**③Actionの紐付け**
関数の準備ができたらActionと紐づけていきます。

1. `flxScrollTop(FABの一番上へ戻る)を選択` > `Actionタブをクリック` > `onClickのEditをクリック` > `Action(scrollToTop)紐づけ`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/a12b03ca-acee-80f3-7ccf-213d9dec3fff.png)

2. `flxScrollBottom(FABの一番下へ戻る)を選択` > `Actionタブをクリック` > `onClickのEditをクリック` > `Action(scrollToBottom)紐づけ`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/66d0f743-3485-b548-5170-cbfa2b7d31dd.png)

3. `btnScrollToItem1(利用規約へ戻る)を選択` > `Actionタブをクリック` > `onClickのEditをクリック` > `Action(scrollToTop)紐づけ`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/2f783b88-8a55-43be-0e58-4cc95db5f480.png)

4. `btnScrollToItem2(プライバシポリシーへ戻る)を選択` > `Actionタブをクリック` > `onClickのEditをクリック` > `Action(scrollToTop)紐づけ`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/e2d7e16d-e361-48e4-a121-6a4b43ffa11b.png)

5. `btnScrollToItem3(少し上へ戻る)を選択` > `Actionタブをクリック` > `onClickのEditをクリック` > `Action(scrollToTop)紐づけ`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/a9454983-fdea-b6f4-b4c9-48c3a1a625de.png)

ここまでで、目的の位置までスクロールする実装が完了しました。
実際にどうなるかみていきましょう！

####**④実装の確認**
<blockquote class="twitter-tweet"><p lang="und" dir="ltr"><a href="https://t.co/GHYIa56PBC">pic.twitter.com/GHYIa56PBC</a></p>&mdash; Kony (@Kony12763790) <a href="https://twitter.com/Kony12763790/status/1353999609786298368?ref_src=twsrc%5Etfw">January 26, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

ボタンをタップすると目的の位置にスクロールされていることが分かりますね！

#まとめ
今回は、目的の位置までスクロールする方法について説明しました。
みなさんもぜひ活用してみてくださいね:wave:

#参考
Form Widgetのメソッド：
https://docs.kony.com/konyonpremises/Subsystems/Widget_User_Guide/Content/Form_Methods.htm

FlexScrollContainerのメソッド：
https://docs.kony.com/konyonpremises/Subsystems/Widget_User_Guide/Content/FlexScrollContainer_Methods.htm

規約の文の雛形：
https://kiyaku.jp/hinagata/gp.html