Subscribed unsubscribe Subscribe Subscribe

UIPageControlを都合よく利用する

Objective-C iPhoneSDK

UIPageControlってなによ

iPhoneのスクロールビューで何ページのうちのどこにいるか示してくれるUIPageControl。あのホーム画面の下にある丸が並んだやつ。現在のページ数を教えてくれるだけでなく、タップによるページ遷移もしてくれる。これはとても便利なんだけど、全画面表示するアプリによっては挙動を変えたい場合もある。通常は非表示にしておいて、フリックした場合のみ表示するようにしてみた。さらに、タッチ操作後しばらくすると消えるように。必要なときだけ利用して、終わったら使い捨て、みたいなー

どうやんのよ

UIScrollViewDelegateを使うにあたりしっくはっくしてんよ。
(gistを貼り付けてみる。初めてなの、キャッ)

なにしてんのよ

上記コードは最低限のところしか書いてないんで、これだけじゃあ用が足りないしコンパイル通るか不明。scrollViewを使うときにこれも書くイメージで。
要は、やりたいことは2つ。さわったらUIPageControlをだす。さわってないときはUIPageControlを消す。
これをそれぞれ

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

の両メソッドでひろって動かしてる。
ポイントとしては、UIPageControlを消すときはスクロール直後に消してしまうと味気ないうえに連続してスクロールさせる場合に出たり消えたりしてしまうので、タイマーで1秒動きがなかったら消えるよう予約していること。もちろん、1秒以内に動きがあったらそれはキャンセルさせている。