3

我真的需要一些帮助,自从 iOS 7 以来,我除了遇到UISwitch.

问题

在显示键盘时向上移动视图并将其恢复到原始位置后,我然后打开UISwitch/关闭它会正常工作,但是它会在动画期间“弹回”。这似乎只发生在UISwitch具有该.thumbTintColor属性的 's 上。我的意思是self.borders.thumbTintColor = [UIColor redColor];当开关关闭和self.borders.thumbTintColor = [UIColor greenColor];开关打开时。

为了清楚起见,在视图移动之前一切正常(我不能这样做,因为您看不到文本字段)

我到处搜索(包括类参考),但没有发现任何有用的东西,或者其他任何有这个问题的人。

更新

我尝试以各种方式设置UISwitch thumTintColor,一切正常,直到我向上移动视图以补偿键盘。如果我在iPad上或通过模拟器缓慢地打开和关闭开关,“反弹”会发生在中途,当颜色根据状态从绿色变为红色或从红色变为绿色时,我认为这是一个实际的 IOS7 UISwitch Bug。我真的不想在我的应用程序上使用第三方开关插件,所以现在不知道该怎么办,人们会认为改变拇指上的色调不会是一个如此大的问题。

我曾尝试将动画从打开关闭到关闭 - 关闭到打开没有区别。

我通过代码而不是IB创建了一个新的UISwitch ,并且存在同样的问题。

创建了一个新的测试应用程序,只有一个开关和文本框进行测试,同样的事情发生了。

问题

1)我的想法是这是一个真正的错误。我如何用苹果记录它(以前从未做过)所以如果有人能指出我正确的地方,我将不胜感激。

2)我现在正在考虑使用按钮作为开关,但觉得这不是要走的路,是否有任何实际理由不这样做,例如将应用程序提交到应用商店等问题?

4

3 回答 3

2

我有类似的问题并找到了解决方案。这有点hacky,但它可以完成工作。只需在将 isOn 属性设置为 On/Off 和更改拇指颜色之间添加一个小的延迟。

switch.isOn = true
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
  self.switch.thumbTintColor = .white
}
于 2019-03-11T14:14:15.943 回答
1

答案 1: 可以通过 iOS 开发中心(页面底部有一个链接)来记录苹果的错误。您也可以寻求技术支持。单击“开发者支持中心”按钮,然后转到“技术支持 (TSI)”(请注意,您每年只能使用有限的数量,然后才能购买更多)。

答案 2:我认为拥有两个按钮将是一个非常糟糕的用户界面决定。苹果可能会因此拒绝它(但你永远不知道)。我会得到错误报告,然后从那里开始。

祝你好运!

于 2013-11-15T17:47:52.487 回答
0

我发现有趣的解决方案可能会有所帮助。

    NSArray *array = [self.mySwitch subviewsWithClass:[UIImageView class]];
    for (UIImageView *imageView in array) {
        imageView.image = [UIImage imageNamed:@"Untitled-1.png"];
    }

听说我使用了 UIView 类别中的方法

- (NSArray*)subviewsWithClass:(Class)class
{
    NSMutableArray *array = [NSMutableArray array];
    if ([self isKindOfClass:class]) {
        [array addObject:self];
    }
    for (UIView *subview in self.subviews) {
        [array addObjectsFromArray:[subview subviewsWithClass:class]];
    }
    return array;
}

图像大小为 {57, 43.5}。圆半径为15(带阴影)

我知道这不是很好的解决方法。但如果你真的需要它会有所帮助。

在此处输入图像描述

在此处输入图像描述

稍微玩一下图像 =)

于 2015-07-23T12:57:34.077 回答