iphone - UIButton 在第一次点击时不工作

标签 iphone ios objective-c xcode

我在我的游戏 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"];
}

最佳答案

在你的viewDidLoad

 if _toggle = 2; 
 frame = CGRectMake(924.0f, 59.0f, audioToggle.frame.size.width, audioToggle.frame.size.height)

if _toggle = 1; 
 frame = CGRectMake(985.0f, 59.0f, audioToggle.frame.size.width, audioToggle.frame.size.height)

但是在你的 buttonAction 中它是不同的。如果 buttonAction 正确,则在 viewDidLoad 中进行交换。

关于iphone - UIButton 在第一次点击时不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14374442/

相关文章:

iPhone,MPMoviePlayerController 如何在双击屏幕时禁用缩放?

iphone - iOS 捕捉视频

ios - 使用 Device token 或 Apple ID 进行应用内购买

javascript - 在通过 JavaScript 添加的 Safari/iOS 上以百分比翻译错误动画

ios - iOS6 中的社交分享面板

ios - 在 AFNetworking 运行时更改 SSL 固定模式

iphone - 如何使用 OpenGL ES 弯曲 3D 纹理?

c# - 如何使用 Xamarin.iOS (C#) 以编程方式截取 iPhone/iPad 的屏幕截图?

ios - Xcode 9 Beta 2 libxml 错误

ios - 如何从搜索栏和 UISearchDisplayController 的过滤结果中选择多个表行?