当我将滑块添加为除self.view之外的任何视图的子视图时,它不起作用(不滑动)但是当它是self.view的子视图时它工作正常。除了self.view之外,您可以在其他视图中看到它,但它不起作用。
这是我的代码:
alphaSlider = [[UISlider alloc] initWithFrame:CGRectMake(0, 0, 90, 10)];
[alphaSlider setMinimumValue:0.01];
[alphaSlider setMaximumValue:1];
[alphaSlider setValue:0.5];
[alphaSlider setUserInteractionEnabled:YES];
[alphaSlider addTarget:self action:@selector(alphaSliderDidChange:) forControlEvents:UIControlEventValueChanged];
alphaSlider.continuous = YES;
[submenu addSubview:alphaSlider];
有什么方法可以解决这个问题吗?
答案 0 :(得分:9)
可能是子菜单未启用用户交互。
[submenu setUserInteractionEnabled:YES];
另一种可能性是滑块的框架位于submenu.frame
之外由于UIViews的clipsToBounds属性默认为NO,因此滑块不会被剪裁,尽管它不在子菜单的框架之外。这意味着子菜单的框架不会覆盖滑块,并且无法将子菜单中的触摸事件传递到子菜单的滑块。设置子菜单的背景颜色并确认滑块完全位于子菜单的框架中。
[submenu setBackgroundColor:[UIColor blueColor]];
子菜单的框架可能类似于(0,0,0,0)。
包含
NSLog(@"%f, %f, %f, %f", submenu.frame.origin.x, submenu.frame.origin.y, submenu.frame.size.width, submenu.frame.size.height);
您也可以
[submenu setClipsToBounds:YES];
如果滑块消失,则子菜单的框架不好。
答案 1 :(得分:9)
检查滑块的框架高度是否太小,无法进行交互。 10磅可能太小了。
从iOS 8开始,我的滑块也停止工作。
过去,像UISlider,UISwitch和UIPickerView这样的UIViews的帧高已经固定为某个预定义的值。您可以设置框架高度,但会被忽略。而不是试图记住," iPad / iPhone上的风景画中UISlider的高度是多少?",我一直将高度设置为0并让操作系统指定默认值。
David Braun's回答让我意识到我的UISlider框架的高度为0会导致用户无法进行交互。
答案 2 :(得分:-1)
我有一个类似的问题,滑块没有水平线,只有白色按钮,根本没有响应。 基于以上所述,我意识到,我的滑块比我的安全区宽。在两侧设置一些约束,现在它工作得很好。