はてなブックマークに追加

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
はてなブックマークに追加

UIScrollViewの使い方 その4



サイトを移行しました。
iPhoneアプリと、そのプログラム



ここまでの3回の説明で、画像のスクロールと拡大縮小を
行うことが出来るようになりました。

UIScrollViewの使い方 その1
UIScrollViewの使い方 その2
UIScrollViewの使い方 その3

今回は、iPhoneの画面がタップされた時に
その座標を表示するプログラムを作ってみたいと思います。


こう書くと簡単そうなのですが、
意外や意外、これが結構めんどくさいのです。


もう一度UIScrollView その1で使った絵を
もう少し、正確に書いたものを書いてみます。
UIScrollView8.jpg


基本的には、ユーザのタッチイベントを取得するのは
一番下側のViewで行うのですが、この図からもわかるように
上側にScrollViewがのっかってしまっているために
タッチイベントがこれに邪魔されて一番下側のViewにまで降りてこないのです。
そこで、タッチイベントがScrollViewを透過してくるように設定します。

この設定は簡単で次の一行をviewDidLoad関数の中に記述するだけです。
scrollView.userInteractionEnabled = NO;	


IBでも同様の設定項目があるので、こちらで設定してもOKです。
UIScrollView9.jpg

ようは、scrollViewは画面がタッチされても無視しますよ~、と
宣言しているだけです。


さて、これで下側のViewがタッチイベントが取得できるようになりました。
タッチイベントを取得するにはtouchesBegan:withEventコールバックを使います。
この関数の中で、タッチされた座標の配列から1つを取り出し
scrollViewにおける座標系に変換して、touchPosに代入して表示ています。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint touchPos = [touch locationInView:scrollView];
NSLog(@"%f, %f", touchPos.x, touchPos.y);
}


これで準備は整いました。早速コンパイル&実行してみましょう。
iPhoneの画面上をタップするごとに、コンソールに座標が表示されれば成功です。

と。ここまでは良かったのですが、問題発生です。
なんと!スクロールができなくなってしまったのです。。
ScrollViewのユーザインタラクションをOFFにしたのですから、
当たり前っちゃぁ、当たり前なんですけどねぇ。

ここまでのプロジェクトをココに置いておきます。
scroll3.zip


次回はこの問題を解決します。
UIScrollViewの使い方 その5
スポンサーサイト

コメントの投稿

非公開コメント

開発アプリ

iDOF 色影 ラテアート ぱすてる

プロフィール

hokuson

Author:hokuson
京都在住。iPhoneアプリ「色影」や「iDOF」の開発者。アプリのレビューとかもしてみる。博士後期課程@R大学。ついに就職活動なるものをしなければいけないらしい。誰か雇ってください。笑。

カレンダー
04 | 2017/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
カテゴリ
最新コメント
RSSリンクの表示
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。