OSのバージョンによって変化するUIAlertViewの表示
iPhone SDKの機能の1つ「UIAlertView」は、iPhoneのOSのバージョンによって表示に違いが出る場合があります。
「Touch Touch Shapes」で見てみると…(左:OS2.2 右:OS3.0)
「やり直す」のボタンの位置が違いますね。この部分の実装はどうなっているかというと
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"メニュー" message:nil delegate:self cancelButtonTitle:@"やり直す" otherButtonTitles:@"タイトルへ", @"キャンセル", nil];
となっています。*1つまり
- OS2.Xではキャンセルボタン、その他のボタンの順に表示される
- OS3.0ではその他のボタン、キャンセルボタンの順に表示される
ということです。
この問題を解決するには「UIDevice」のプロパティに含まれるOSのバージョンを取得して処理の切り分けをする
NSString *ver = [UIDevice currentDevice].systemVersion; //verの値に応じて処理の切り分けを行う //if(...
もしくはキャンセルボタンを設定せず、全てその他のボタンに設定する。
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"メニュー" message:nil delegate:self cancelButtonTitle:nil otherButtonTitles:@"やり直す", @"タイトルへ", @"キャンセル", nil];
上記どちらかの方法で解決できます。