【发布时间】:2023-04-01 15:05:02
【问题描述】:
所以我有一个奇怪的。
我目前在 App Store 中有一个清单应用程序。今天,一位用户在使用UISwitch 时报告了奇怪的行为。
如下所示,这是Storyboard 中的一个简单开关,与 IBAction 相关联,就像我自 iOS 8 以来一直做的那样。
您检查切换到on,它会将图像更改为全 alpha 以表明您拥有它,否则图像将保持半透明和off。
- (IBAction)Switch1:(id)sender { //IBAction linked to Switch
if([S001 isOn]) { //if Switch 'S001' is ON...
myImage.alpha = 1.0; //make image NOT transparent
...
//save ON //save data using NSUserDefaults
}
else { //else switch is OFF...
myImage.alpha = 0.3; //make image TRANSPARENT
...
//save OFF //save data using NSUserDefaults
}
}
基本上,当用户按下开关时,它会动画并更改为ON,但看起来if([S001 isOn]) 从未被调用,因为if 内的任何内容都没有被调用。即图像不会更改为完整的 Alpha,并且没有任何内容保存为 ON。
用户使用的是运行 iOS 10.1.1 的 iPhone 6。现在奇怪的是,我在 iPhone 7+ 上运行 iOS 10.1.1 并且运行良好。它也适用于所有屏幕尺寸的 iOS 9。
我做了一些阅读,在 Stackoverflow 上找到了 THIS 和 THIS,看起来其他人也遇到了类似的问题。
所以我猜如果人们在 iOS 9 中使用我的应用程序,然后升级到 iOS 10,那么他们就会遇到这个问题,但我不能确定。因为这似乎是一个独特的案例。
这可能是什么原因造成的?对于 iOS 10 用户,我可以做些什么来改进我的 IBAction?
【问题讨论】:
-
为什么你的
Switch1:方法作用于S001而不是sender? -
@rmaddy 你什么意思?
Switch1是IBAction的S001。声明如下:IBOutlet UISwitch *S001和-(IBAction)Switch1:(id)sender; -
@rmaddy 我用错了 IBAction 吗?感谢您的帮助。
-
sender参数将是UISwitch。最好对发件人采取行动,而不是对交换机的一些外部参考。 -
@rmaddy 哦,我明白了。你介意向我展示更有效的语法吗?我不熟悉这样做。我见过的所有教程都是这样实现的。谢谢。
标签: ios objective-c iphone uiswitch