ゲームの Optic Combat で効果音をオン/オフするカスタム スイッチを作成しましたが、何らかの理由で、タップするとスイッチが別の位置に移動するアニメーション ボタンが最初のタップで機能しません。後続のタップは機能しますが、最初のタップは機能しません。
私が持っているボタンの IBAction で:
- (IBAction)theSwitch:(id)sender {
NSUserDefaults *toggle = [NSUserDefaults standardUserDefaults];
if (_toggle == 1) {
[UIView animateWithDuration:0.3 animations:^{
audioToggle.frame = CGRectMake(985.0f, 59.0f, audioToggle.frame.size.width, audioToggle.frame.size.height);
}];
_toggle ++;
[toggle setInteger:_toggle forKey:@"toggleState"];
[toggle synchronize];
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"audioOn"];
}
else {
[UIView animateWithDuration:0.3 animations:^{
audioToggle.frame = CGRectMake(924.0f, 59.0f, audioToggle.frame.size.width, audioToggle.frame.size.height);
}];
_toggle --;
[toggle setInteger:_toggle forKey:@"toggleState"];
[toggle synchronize];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"audioOn"];
}
}
viewDidLoad で、スイッチの状態を確認し、正しい位置 (オンまたはオフ) を表示するように調整します。
- (void)viewDidLoad
{
[super viewDidLoad];
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"audioOn"]) {
[audioToggle setFrame:CGRectMake(924.0f, 59.0f, audioToggle.frame.size.width, audioToggle.frame.size.height)];
_toggle = 2;
}
else {
[audioToggle setFrame:CGRectMake(985.0f, 59.0f, audioToggle.frame.size.width, audioToggle.frame.size.height)];
_toggle = 1;
}
編集:ボタンの IBAction で、これを使用して問題を解決しました。
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"audioOn"]) {
[UIView animateWithDuration:0.3 animations:^{
audioToggle.frame = CGRectMake(985.0f, 59.0f, audioToggle.frame.size.width, audioToggle.frame.size.height);
}];
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"audioOn"];
}
else {
[UIView animateWithDuration:0.3 animations:^{
audioToggle.frame = CGRectMake(924.0f, 59.0f, audioToggle.frame.size.width, audioToggle.frame.size.height);
}];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"audioOn"];
}