当状态从开/关变化时自定义UISwitch弹跳 - IOS-7 Bug?

时间:2013-10-29 19:23:36

标签: ios objective-c uiswitch

我真的需要一些帮助,因为iOS 7我只有UISwitch的问题。

问题

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

为了清楚起见,一切都运行良好,直到移动视图(我不能这样做,因为你无法看到文本字段)

我到处搜索(包括课程参考),我没有找到任何有用的信息,或其他任何有此问题的人。

更新

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

我已经尝试将动画从开启关闭到关闭到关闭没有任何区别。

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

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

问题

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

2)我现在正在考虑使用Buttons作为开关,但觉得这不是可行的方法,有没有任何实际的理由不这样做,即将应用程序提交到App Store等问题?

3 个答案:

答案 0 :(得分:1)

答案1:使用Apple登录错误可以通过iOS开发中心完成(页面底部有一个链接)。您也可以要求技术支持。单击“开发人员支持中心”按钮,然后转到“技术支持(TSI)”(请注意,在您必须购买更多产品之前,您每年只能使用有限的数量)。

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

祝你好运!

答案 1 :(得分:1)

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

switch.isOn = true
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
  self.switch.thumbTintColor = .white
}

答案 2 :(得分: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,53.5}。圆半径为15(带阴影)

我明白这不是一个很好的解决方法。但如果你真的需要帮助。

enter image description here

enter image description here

稍微玩一下图像=)