どうもです。

予告編4回目です。


「コンソールにロギングでデバッグ」

プログラムをする際に、大抵の人は、変数に正しい値が入ってきているかなどを
コンソールに書き出してデバッグをしながら進めると思うのですが、
Objective-Cでは、NSLogという関数を使うと、コンソールに書き出しができる。

NSLog(@"フォーマット", 変数...);

フォーマットは、%を付けた置き換え部分と、そのまま書き出す部分で構成される。
変数のところは、フォーマットで%を書いた数だけ必要。

置き換えの代表的なもの

%d 数値
%x 16進
%f 小数
%@ クラス


例えば、変数iに数値が入っているとして、"value=数値"の形で出力したい場合、


NSLog(@"value=%d", i);


となる。





NSLogは開発の基本。
コンソールに書き出せば、見た目に変わってなくても、処理がきてるんだなー
って確認できる。
開発中は、コンソールにいつもどひゃーってたくさん書き出ししちゃう、、



「画像をタッチ」

次に画像の領域をタッチしたら反応するように設定する。

タッチしたときは、UIViewのtouchesBeganというメソッドが呼び出されるので、
UIViewのサブクラスを作って、touchesBeganをオーバーライドすることで、
タッチの検出ができる。


ここで、新しいクラス「xxxxMyTouchView」をMyViewのときと同様に作成。

xxxxMyTouchView.mにtouchesBeganのメソッドを追加する。
とりあえず、タッチされたときにコンソールに出力させて動いたことを確認。


- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
NSLog(@"touched");
}



このクラスをMyViewに組み込む。

まず、MyViewの先頭でヘッダファイルを読み込む。


#import "xxxxMyView.h" // すでにある
#import "xxxxMyTouchView.h" // 追加


TouchView用に変数を定義


@implementation xxxxMyView{
UIImageView* _img;
xxxxMyTouchView* _touch; // 追加
}


initのreturn self;の前でViewのadd処理を追加

_touch = [[xxxxMyTouchView alloc] init]; // TouchViewを作成
_touch.frame = _img.frame; // 位置、サイズを画像と同じにする
[self addSubview:_touch]; // MyViewにaddする

return self;


これでタッチに反応するようになった。
画像部分をタッチしたときに、コンソールにtouchedと表示されれば、完成!です。




今回のサンプルでは、画像とタッチ領域をわけてます。
ぼくは、結構、こういう作り方が好きなんです。
表示する部分と、タッチに反応する部分をわけたほうがわかりやすい、というか。。。
たぶんきっと好みですね。
自分で作るときは、お好みでどうぞ。試しにUIImageViewを拡張してやってみるもの
勉強になるかもです。


ではでは。
台風来てますけど、みなさん、お気をつけて~。

↓↓セミナー詳細はこちら↓↓
場所:代々木研修室B1F(代々木駅徒歩1分) http://e-kaigi.eabc.jp/
日時:2013年10月18日(金)19:00-20:30
参加費:500円
定員:20名
詳しくはFBイベントページまで