私のアプリは、いくつかの異なるビューでUIStepperコントロールを使用しています。これらのビューにまったく影響を与えないようにアプリのマイナーアップデートをリリースし、アプリ内のすべてのUISteppersが無効になっているというレポートを受け取り始めました。1人のユーザーがスクリーンショットを送信すると、ステッパーコントロールは、有効なプロパティがNOに設定されているように見えます。ただし、コード内にこのプロパティを設定する場所はまったくなく、デフォルトはYESです。「有効」という用語のインスタンスをアプリで検索して、誤って無効にしていないことを確認しましたが、そうではありません。
おそらく、enabledプロパティのデフォルト値がiOSのバージョン間で変更されていると思いましたが、これを報告したユーザーは、私の開発デバイスと同じiOS5.1.1を実行しています。そして、私はこのアプリのアップデートの問題について聞き始めただけです。
enabledプロパティを設定する以外に、最小値と最大値を同じ値に設定すると、ステッパーが無効になることがわかりました。私はこれが私のアプリで起こっていないことをかなり確信しています。値はハードコーディングされてセットアップメソッドに渡されます。多くのアプリバージョンが前からこのコードを変更していません。
これが起こる他の理由を知っていますか?自分で問題を再現することはできず、一部のユーザーにしか影響しないため、トラブルシューティングが困難です。
UISteppersを作成するための私のコードは次のとおりです。
- (UIStepper *)makeStepperInput:(float )currentValue minValue:(float)minValue maxValue:(float)maxValue increment:(float)increment {
int stepperWidth = 94;
int stepperHeight = 27;
CGRect stepperFrame = CGRectMake(0, 0, stepperWidth, stepperHeight);
UIStepper *stepperInput = [[[UIStepper alloc] initWithFrame:stepperFrame] autorelease];
stepperInput.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
[stepperInput setValue:currentValue];
[stepperInput setMinimumValue:minValue];
[stepperInput setMaximumValue:maxValue];
[stepperInput setStepValue:stepValue];
[stepperInput setContinuous:NO];
NSLog(@"making stepper with values %f, %f, %f, %f (%i)", currentValue, minValue, maxValue, stepValue, stepperInput.enabled);
[stepperInput addTarget:self action:@selector(onChange:) forControlEvents:UIControlEventValueChanged];
return stepperInput;
}
更新:上記のNSLog行を使用してデバッグバージョンをインストールすることをいとわないユーザーがいます。彼は私にコンソール出力を送信し、ステッパーの最小値と最大値が正しく(1つのケースでは1と20)、有効なプロパティがYESであることを示しています。残念ながら、それはここで何が起こっているのかについての私の理論の両方を排除します...