UITableView は、縦スクロールのみを行うことが出来ますが、たまに、横スクロールを行いたいときもあります。その際、タッチの検出がおかしくなる場合があるので、その対策方法を説明します。
横スクロールをするためには、テーブルを回転する必要があります。
回転自体は以下の様に行えます。
CGRect originalFrame = tableRotateView.frame;
tableRotateView.transform = CGAffineTransformMakeRotation(M_PI *(-90) / 180.0f);
tableRotateView.frame = originalFrame;
ただし、これだと、タッチ検出の問題が発生します。タッチ範囲が tableRotateView.frame のエリアに限定されますが、実際は、回転しているので、テーブルの一部のタッチが検出出来なくなります。この場合、tableRotateView.frameは、tableRotateView.boundsと等しくならない事が原因のようです。
対処方法は、テーブルのsuperViewになるview、tableBgViewを作成し、そのビューを回転させて、tableRotateView.frame = tableBgView.bounds にします。
CGRect originalFrame = tableBgView.frame;
tableBgView.transform = CGAffineTransformMakeRotation(M_PI *(-90) / 180.0f);
tableBgView.frame = originalFrame;
こうしてあげると、tableRotateView.frameは、tableRotateView.boundsと等しくなるため、タッチのエリアも正しくなります。
いま、ツイッターのタイムラインを、一覧して概観出来るアプリを作っています。このアプリで、横スクロールテーブルビューを使っています。こんな感じです。
もし、テスト版を使ってみたい方がおられましたら、testFlightで開発版をお送りします。twitter – Tomohisa Takaoka (tomohisa) までご連絡ください。