入力項目がたくさんあって、UIScrollViewを使ってスクロールするさせながら入力するようなアプリを作る場合の注意点です。
入力画面
入力画面はこんなのです。
![入力画面1](https://kisagai.com/wp-content/uploads/2012/05/b02994e24101136a0db895e9e57bfbee.png)
この画面で文字を入力しようとすると、キーボードが出てくるので表示領域が狭くなります。そこで、スクロールさせて入力するようにします。
![入力画面でキーボード表示](https://kisagai.com/wp-content/uploads/2012/05/9d6f1d9cb72642c81331e646cdef32351.png)
ユーザインターフェイスの構造
UIScrollViewの中にUIViewを入れてそのUIView上に入力項目を配置します。
![UIのアウトライン](https://kisagai.com/wp-content/uploads/2012/05/0419cdf96d0bdbcaebb563e6b061fde5.png)
入力領域のスクロールを実装
UIScrollViewのコンテンツのサイズを実際のUIViewの大きさに設定するとスクロールできるようになります。
- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; self.scrollView.contentSize = self.inputView.frame.size; }
注意点
struts and springs の設定を間違えると、タップに反応しないフィールドが出てきます。
正解例
UIViewのサイズを固定するように設定する必要があります。
![正解例](https://kisagai.com/wp-content/uploads/2012/05/e26ce19287a988b22a70e476dfb2a69a.png)
失敗例
UIViewのサイズを自動的に伸縮するように設定すると上手く動きません。
![失敗例](https://kisagai.com/wp-content/uploads/2012/05/712e78bab15affdb7baff4d803a311e6.png)
UIScrollViewの表示領域より外にある入力フィールドはタップが認識されなくなり、入力できなくなってしまいます。ReturnキーをNextに変更して、Nextを押しても次の入力フィールドにはカーソルが移動せずに、なぜかキーボードが消えます。
![タップに反応しない](https://kisagai.com/wp-content/uploads/2012/05/ec38a7b4270aaa7c3d2d1664d9354c13.jpg)
UIScrollViewは伸縮できるように設定するので、勢いでUIViewまで伸縮設定をしないように気をつけましょう。
![UIScrollViewの伸縮設定](https://kisagai.com/wp-content/uploads/2012/05/ea5e81bb413fb9e372ca4b72cf34b4dc.png)