今回からAppleのサンプルプロジェクトは

Autoscroll

 に突入。
 このサンプルでは画面をタップすると画像選択用のビューがポップアップして、このビューで

テン・シー・シー-1

 といった、スクロールや画像のドラッグと

テン・シー・シー-2

 という配置換えのアニメーションとオートスクロール機能が使えます。
 なので、

  • UIScrollViewに埋め込んだUIViewで独自のドラッグをする

  • ドラッグ時に、画像配置を調整するアニメーションをおこなう

  • 画面外にドラッグしようとした時に自動的にスクロールさせる


 の実装の仕方が学べるわけです。
 ということで、まずはRootViewControllerクラスの

- (void)tapDetectingImageView: gotSingleTapAtPoint:

 を調べて

- (void)toggleThumbView

 が呼ばれてるのを確認。
 こいつが画像選択用のビューを表示したり、隠したりするみたいです。しかも、ちゃんとアニメーションで。アニメーションもいずれ、じっくりやってみたい...
 ま、それは置いといて

- (void)createSlideUpViewIfNecessary
- (void)createThumbScrollViewIfNecessary

 と立て続けにチェック。
 やってることはUIScrollViewを作って、そこにThumbImageViewを追加していく作業みたいです。
 なので、基本は前回と同じ。ビューの構成はこんな感じ。

テン・シー・シー-3

 私のプロジェクトでも、基本この構成で行きますが、まずはslideUpViewの機能だけの単体アプリをつくってみます。
 ということで、いつものようにView-Base-Applicationプロジェクトを作成「iPhoneアプリ開発、その(118)」参照。今回のプロジェクトは最終的にscに合成するのでscフォルダの中に作成しました。これも、いつものパターン。
 とりあえず、極力シンプルにしたサンプルプロジェクトだけ提供。

sc5/list/list.xcodeproj

 です。
 これでも、ドラッグはできるし、手を離すともとの位置にアニメーションで戻る。
 え、だって、この前の話でtouchesCancelledがバンバン飛んでくるって言ってたじゃん。と思った人、そーです、そのとおり!
 この問題を解決してるメソッドがlistViewControllerクラスの

[thumbScrollView setCanCancelContentTouches:NO];

 なわけです。試しにこの行を削除するなり、注釈にするなりして動かしてみてちょ。
 説明は次回!

------------
サンプルプロジェクト:sc5.zip