技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

iPhoneOS 3.0 SDK のUIScrollView 挙動の変化

iPhoneOS2.2.1 までは touchesBegin: → touchesMoved: → touchesEnded: くらいまで、子クラスで取れる。
しかも何故か、touchesEnded: が2回起きる。
iPhoneOS 3.0 SDK でコンパイルすると、touchesEnded: が1回呼ばれるだけ。

直ったといえば聞こえはいいが、まだ 2.2.1 向けビルドしないと審査通らない。
どうするか悩んだ挙句、以下の選択肢があると。

UIDevice 使う

普通の手段で OS のバージョン拾う。

  NSString* version = [[UIDevice currentDevice] systemVersion];

この方法だと、シミュレータバージョンを変えたときにどうにかなるんだが、
ビルドの状態まで把握できない。
加えて文字列だから、「バージョン XX 以上」とかやるのがだるい*1

__IPHONE_OS_VERSION_MIN_REQUIRED の値を参照

こんなマクロがあって、iPhoneOS 3.0 だと、「30000」に化ける。
だから、この値以上なら、、、、と指定する。
ただし、アンドキュメントなので、自己責任で。

*1:compare とか使えばいいんだろうけど