UIScrollViewの中で入力するときの注意点

入力項目がたくさんあって、UIScrollViewを使ってスクロールするさせながら入力するようなアプリを作る場合の注意点です。

入力画面

入力画面はこんなのです。

入力画面

この画面で文字を入力しようとすると、キーボードが出てくるので表示領域が狭くなります。そこで、スクロールさせて入力するようにします。

入力画面でキーボード表示

ユーザインターフェイスの構造

UIScrollViewの中にUIViewを入れてそのUIView上に入力項目を配置します。

UIのアウトライン

入力領域のスクロールを実装

UIScrollViewのコンテンツのサイズを実際のUIViewの大きさに設定するとスクロールできるようになります。

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    self.scrollView.contentSize = self.inputView.frame.size;
}

注意点

struts and springs の設定を間違えると、タップに反応しないフィールドが出てきます。

正解例

UIViewのサイズを固定するように設定する必要があります。

正解例

失敗例

UIViewのサイズを自動的に伸縮するように設定すると上手く動きません。

失敗例

UIScrollViewの表示領域より外にある入力フィールドはタップが認識されなくなり、入力できなくなってしまいます。ReturnキーをNextに変更して、Nextを押しても次の入力フィールドにはカーソルが移動せずに、なぜかキーボードが消えます。

タップに反応しない

UIScrollViewは伸縮できるように設定するので、勢いでUIViewまで伸縮設定をしないように気をつけましょう。

UIScrollViewの伸縮設定